我正在使用Capistrano部署Rails应用程序。
这个应用程序有一些工作通过Resque运行很长时间(大约1到3个小时)。
作业通过外部进程(不是cron)排入队列,我不知道作业入队的确切时间。
当我部署应用程序时,我希望Resque调度程序加载新的Rails环境。
我不希望在部署期间杀死正在运行的作业。
理想情况下,正在运行的进程应该完成,并且Resque调度程序应该加载新的Rails环境,因此下次运行作业时,它将使用更新的应用程序运行。
我知道如何使用monit / supervisor监视/重启进程。但不确定关闭/重启何时Resque进程的策略/时间。
有什么建议吗?
答案 0 :(得分:1)
如果您将QUIT
信号发送给Resque工作人员,它将完成当前作业的处理,然后关闭。请参阅Resque README的Signals部分。
一旦工作流程关闭,流程主管就能够使用更新的代码启动新工作人员。