【问题标题】:How to pause Resque processing on Heroku?如何在 Heroku 上暂停 Resque 处理?
【发布时间】:2016-03-22 17:03:05
【问题描述】:

我正在从 Delayed_jobs 迁移到 Resque,并且考虑到我将有很多工作总是在排队(一些在未来),我无法知道我什么时候可以将工作人员缩减到 0 来做一个安全的新工作释放。

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

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

然后我可以增加工人数量并恢复处理。

【问题讨论】:

  • 您可以优先考虑作业QUEUES=critical,qeued, new_job rake resque:work 而不是停止新的

标签: ruby-on-rails heroku ruby-on-rails-3.2 resque resque-scheduler


【解决方案1】:

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

【讨论】:

  • 听起来不错,如何向 Heroku 上的所有工作人员发送 USR2 信号?
  • 除非我错过了什么,否则这并不能解释如何向所有 Heroku 工作人员发送信号。
  • 我需要在 Heroku 上运行它,而不是在本地运行
猜你喜欢
  • 2016-10-17
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 2011-11-07
  • 2012-08-28
  • 2012-03-25
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多