我见过人们在几个不同的地方说发条应该在自己的dyno上运行,procfile可能看起来像这样(来自heroku的例子):
clock: bundle exec clockwork lib/clock.rb
有没有理由不在与工人相同的dyno上运行它?使用如下所示的过程:
worker: bundle exec clockwork clock.rb & bundle exec sidekiq -C config/sidekiq.yml -L log/sidekiq.log
这种方式看似很好,但我想知道人们说不这样做的根本原因。任何指导将不胜感激。提前谢谢。
答案 0 :(得分:0)
我最近开始并行运行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说:
我见过人们在几个不同的地方说
但是,如果您具有链接,我很想阅读这些评论。