是否有一种优雅的方式来重新启动resque工作者(比如在像deploy之类的事件之后),从队列中处理某些工作的工作人员不会立即被SIGTERM或SIGKILL等信号杀死,而应该立即等待工人完成它正在做的任务,并在工人获得自由时杀死工人。
我正在使用上帝监视resque工作人员,我经历了God homepage,但无法找到相同的任何信息但看到它只是监视进程的宝石我不认为它有一种优雅的方式来做到这一点。
另外,我希望在部署时重新启动自动工作器,我已经研究了这两种方法(http://simonecarletti.com/blog/2011/02/how-to-restart-god-when-you-deploy-a-new-release/,http://balazs.kutilovi.cz/2011/12/04/deploying-resque-scheduler-with-capistrano/)。如果有更好的方法,那将会非常有帮助。
答案 0 :(得分:3)
结果resque有一个选项,如果你传递SIGQUIT信号,它将等待工人完成工作,然后退出工人,上帝可以选择为进程设置一个停止信号。所以,你可以定义' QUIT'作为resque工作者的stop_signal,当你停止上帝时,它会将单一的SIGQUIT发送给工人。