我有几个当前作为rake任务运行的进程。我可以以某种方式使用Sidekiq在连续循环中执行进程吗?这是Sidekiq的最佳实践吗?
这些过程虽然现在在后台以各自的rake任务连续循环运行,但偶尔会失败。然后我必须重新启动rake任务。
我在SO社区的帮助下尝试了几种选择。一个是弄清楚如何使用monit
监控rake任务。但这意味着每个进程都必须拥有自己的环境,从而增加服务器负载。由于我在虚拟化环境中运行,我希望尽可能消除它。
另一个选择就是利用我已有的Sidekiq选项。我现在使用Sidekiq进行后台处理,但它总是只有一次性。有什么方法可以让我在Sidekiq有一个持续的过程吗?并且还会收到故障通知并让流程自动重启?
答案 0 :(得分:2)
Sidekiq作者Mike Perham的回答是使用cron
作业来完成这样的计划任务。您可以创建rake
任务,将作业提交到Sidekiq
以在后台运行。然后创建一个cron
作业来安排它。
答案 1 :(得分:1)
我不知道你为什么选择sideki,这个项目是否具体?以前我遇到了同样的问题,但我迁移到delayed_job,它满足了我的需求。如果活动记录对象是事务性使用delayed_job,否则去resque它也是一个很好的。