在Capistrano部署期间管理Resque Worker

时间:2013-12-15 22:19:26

标签: deployment capistrano resque

我正在使用Capistrano部署Rails应用程序。

这个应用程序有一些工作通过Resque运行很长时间(大约1到3个小时)。

作业通过外部进程(不是cron)排入队列,我不知道作业入队的确切时间。

当我部署应用程序时,我希望Resque调度程序加载新的Rails环境。

我不希望在部署期间杀死正在运行的作业。

理想情况下,正在运行的进程应该完成,并且Resque调度程序应该加载新的Rails环境,因此下次运行作业时,它将使用更新的应用程序运行。

我知道如何使用monit / supervisor监视/重启进程。但不确定关闭/重启何时Resque进程的策略/时间。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您将QUIT信号发送给Resque工作人员,它将完成当前作业的处理,然后关闭。请参阅Resque README的Signals部分。

一旦工作流程关闭,流程主管就能够使用更新的代码启动新工作人员。