我看到人们在几个不同的地方说,clockwork 应该在自己的 dyno 上运行,其 procfile 可能看起来像这样(来自 Heroku 的示例):
clock: bundle exec clockwork lib/clock.rb
有什么理由不让它与 worker 在同一个测功机上运行吗?流程如下所示:
worker: bundle exec clockwork clock.rb & bundle exec sidekiq -C config/sidekiq.yml -L log/sidekiq.log
这种方式似乎工作得很好,但我想知道人们说不要这样做的根本原因。任何指导将不胜感激。提前致谢。
最佳答案
我最近开始并行运行 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 美元。
what would happen if sidekicks dies? (@Anthony said)
通常 sidekiq 不会死(至少对我来说),我认为这是因为 sidekiq 仅管理工作。实际工作发生在类里面 一个 Perform() 方法,当这些方法“引发/失败”时,它不会 用它来关闭 sidekiq 父级。 Sidekiq 有一个 GUI,显示重试队列 和一个死队列,所以死作业最终会出现在这些地方之一。
顺便说一句,Heroku 有一篇关于在单个“dyno”中运行多个作业的文章: https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno
OP 说:
I've seen people say in a couple of different places
如果您有链接,我很想阅读这些评论。
关于ruby - Clockwork需要自己的进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289971/