6

我见过人们在几个不同的地方说发条应该在自己的测功机上运行,​​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

这种方式似乎工作得很好,但我想知道人们说不要这样做的根本原因。任何指导将不胜感激。提前致谢。

4

1 回答 1

2

我最近开始并排运行 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,因此死任务最终会出现在其中一个地方。

顺便说一句,Heroku 有一篇关于在单个“dyno”中运行多个作业的文章: https ://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno

OP 说:

我见过人们在几个不同的地方说

不过,如果您有链接,我很想阅读这些评论。

于 2019-10-05T01:57:58.660 回答