Redis和Resque,工作人员没有获得更新的应用程序代码

时间:2011-07-18 05:00:04

标签: ruby-on-rails resque

我在这里与Resque度过了一段艰难的时光,首先,在开发中运行rake resque:work QUEUE='*'来处理队列时它启动正常并开始为我的工作人员运行perform方法,这是精细;问题是工作人员似乎没有运行我的新应用程序代码,比如我更新了该工作人员中的perform方法,然后 Ctrl + c rake resque:work QUEUE='*'处理并重新启动它,同时排队要处理的新作业不会导致工作人员使用新的更新代码运行。

所以主要是我的问题是,我如何安全地杀死resque:work任务并使用新的应用程序代码重新启动我的工作人员?

1 个答案:

答案 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