我在几个不同的地方看到人们说,clockwork应该在它自己的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这种方式似乎工作得很好,但我想知道为什么人们说不要这样做的根本原因。任何指导都将不胜感激。提前谢谢。
发布于 2019-10-05 09:57:59
我最近开始同时运行sidekiq和clockwork,就像这样:
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,它显示重试队列和死队列,因此死作业将在其中一个位置结束。
顺便说一句,Heroku有一篇关于在单个“dyno”中运行多个作业的文章:https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno
OP说:
我在几个不同的地方看到过人们说的
不过,如果你有链接,我会很好奇地阅读这些评论。
https://stackoverflow.com/questions/29289971
复制相似问题