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