ruby轨道 – 轨道定期任务

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

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

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

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

解决方法

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

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...