微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby轨道 – 轨道定期任务

我有一个 ruby在rails应用程序,我试图找到一种方法来运行一些代码每几秒钟.

我已经使用cron或cron-like实现发现了许多信息和想法,但是这些只是精确到了一分钟,和/或需要外部工具.我想每15秒左右踢任务,我希望它在应用程序中完全自包含(如果应用程序停止,任务停止,没有外部设置).

这被用于缓存数据的后台生成.每隔几秒钟,任务将汇集一些数据,然后将其存储在所有客户端请求使用的缓存中.任务相当缓慢,因此需要在后台运行,而不是阻止客户端请求.

我相当新的ruby,但有一个强大的perl背景,我将解决这个方法将是创建一个间隔定时器&处理程序,它分叉,运行代码,然后在完成后退出.
只需模拟客户端请求,并使rails控制器自身叉起来更好.这样我可以通过点击它的URI来启动任务(虽然这个任务将会每隔几秒钟运行一次,但我怀疑我将会需要,但是可能会有将来的使用).尽管只要控制器调用周期性任务调度程序调用任何方法(一旦有一个调用),这将是微不足道的.

解决方法

一般来说,没有内置的方式,我知道在应用程序中创建一个周期性的任务. Rails是建立在Rack上的,它期望接收http请求,做某事,然后返回.所以你只需要自己管理周期性的工作.

我认为考虑到您需要运行任务的频率,一个体面的解决方案可能只是为自己写一个简单的耙子任务,永久循环,并在启动应用程序的同时,使用像Foreman这样的东西来启动它.工头经常被用来管理启动/关闭后台工作人员及其应用程序.在生产中,您可能想使用别的东西来管理进程,如Monit.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐