我在这里与Resque度过了一段艰难的时光,首先,在开发中运行rake resque:work QUEUE='*'
来处理队列时它启动正常并开始为我的工作人员运行perform
方法,这是精细;问题是工作人员似乎没有运行我的新应用程序代码,比如我更新了该工作人员中的perform
方法,然后 Ctrl + c rake resque:work QUEUE='*'
处理并重新启动它,同时排队要处理的新作业不会导致工作人员使用新的更新代码运行。
所以主要是我的问题是,我如何安全地杀死resque:work
任务并使用新的应用程序代码重新启动我的工作人员?
答案 0 :(得分:4)
Resque工作人员回应了几个不同的信号:
QUIT - Wait for child to finish processing then exit
TERM / INT - Immediately kill child then exit
USR1 - Immediately kill child but don't exit
USR2 - Don't start to process any new jobs
CONT - Start to process new jobs again after a USR2
如果要优雅地关闭Resque工作线程,请使用QUIT。
kill -s QUIT reqsue.pid
如果您想使用capitrano设置resque restart,请使用this gits