【发布时间】:2012-11-01 10:20:43
【问题描述】:
我有一个 ruby on rails 应用程序,我正在尝试找到一种每隔几秒运行一些代码的方法。
我发现了很多使用 cron 或类似 cron 的实现的信息和想法,但这些只是精确到分钟,和/或需要外部工具。我想每 15 秒左右启动一次任务,并且我希望它完全独立地包含在应用程序中(如果应用程序停止,任务停止,并且没有外部设置)。
这用于缓存数据的后台生成。每隔几秒钟,该任务将组装一些数据,然后将其存储在缓存中,供所有客户端请求使用。这个任务很慢,所以它需要在后台运行并且不阻塞客户端请求。
我是 ruby 的新手,但有很强的 perl 背景,我解决这个问题的方法是创建一个间隔计时器和处理程序,它分叉、运行代码,然后在完成后退出。 仅仅模拟一个客户端请求并让 Rails 控制器自己派生可能会更好。这样,我可以通过点击它的 URI 来启动任务(尽管由于任务将每隔几秒钟运行一次,我怀疑我是否需要这样做,但可能会在未来使用)。虽然让控制器调用周期性任务调度程序正在调用的任何方法都是微不足道的(一旦我有一个)。
【问题讨论】:
标签: ruby-on-rails ruby asynchronous scheduled-tasks