我正在从 Delayed_jobs 迁移到 Resque,并且考虑到我将有很多工作总是在排队(将来有一些),所以不可能知道我什么时候可以将工作人员缩减到 0 以进行安全的新版本。
有什么方法可以安全地告诉 Heroku 上的工作人员完成当前工作的处理但不接受任何新工作?
这样,当工作没有处理任何事情时,我可以将工作人员缩减到零,以便在 Heroku 上安全地发布新版本。
然后我可以扩大工人数量并恢复处理。
我正在从 Delayed_jobs 迁移到 Resque,并且考虑到我将有很多工作总是在排队(将来有一些),所以不可能知道我什么时候可以将工作人员缩减到 0 以进行安全的新版本。
有什么方法可以安全地告诉 Heroku 上的工作人员完成当前工作的处理但不接受任何新工作?
这样,当工作没有处理任何事情时,我可以将工作人员缩减到零,以便在 Heroku 上安全地发布新版本。
然后我可以扩大工人数量并恢复处理。
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
在您的情况下,您不想处理新工作,因此您可以使用USR2
更多阅读heroku中的信号
http://hone.herokuapp.com/resque/2012/08/21/resque-signals.html
您需要知道进程 ID 并发送信号
USR2 rscue.pid