2

我正在从 Delayed_jobs 迁移到 Resque,并且考虑到我将有很多工作总是在排队(将来有一些),所以不可能知道我什么时候可以将工作人员缩减到 0 以进行安全的新版本。

有什么方法可以安全地告诉 Heroku 上的工作人员完成当前工作的处理但不接受任何新工作?

这样,当工作没有处理任何事情时,我可以将工作人员缩减到零,以便在 Heroku 上安全地发布新版本。

然后我可以扩大工人数量并恢复处理。

4

1 回答 1

0

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
于 2015-12-16T14:19:46.167 回答