[我已经看到人们在几个不同的地方说,发条应该以自己的dyno运行,其procfile可能看起来像这样(例如heroku中的示例:
clock: bundle exec clockwork lib/clock.rb
有没有理由不与工人使用相同的测功机?使用如下所示的过程:
worker: bundle exec clockwork clock.rb & bundle exec sidekiq -C config/sidekiq.yml -L log/sidekiq.log
这似乎很好用,但是我想知道人们为什么不这样做的根本原因。任何指导将不胜感激。预先感谢。
我最近开始并行运行sidekiq和发条,像这样:
web: bundle exec puma -C config/puma.rb
worker: bundle exec clockwork clock.rb & bundle exec sidekiq & wait -n
# ^ https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno
到目前为止,还没有发现任何问题。...在heroku主机上,这为我们每月节省了$ 25。
如果同伴死亡,会发生什么? (@安东尼说)
通常sidekiq不会死(至少对我而言),我认为是因为sidekiq仅管理工作。实际工作发生在与一个perform()方法,当这些方法“提高/失败”时,它不会降低sidekiq父级。 Sidekiq的GUI显示重试队列和死队列,所以死的工作将最终在那些地方之一。
btw Heroku上有一篇文章,关于在一个“ dyno”中运行多个作业:https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno
OP说:
我见过人们在几个不同的地方说
但是,如果您有链接,我很想读那些评论。