ruby - Clockwork需要自己的进程吗?

标签 ruby heroku sidekiq clockwork

我看到人们在几个不同的地方说,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/

相关文章:

ruby-on-rails - 测试 View /DOM 内容 RSpec ruby​​ capybara

ruby - 使用 jemalloc 调试 sidekiq worker 内存泄漏

mongodb - 无法在部署的 Heroku 网站上显示 MongoLab 数据

ruby-on-rails - 如何从 sidekiq 工作人员调用另一个工作人员并监控其进度而不暂停子工作人员

Sidekiq web 返回一个带有空正文的空白页面

ruby - ruby 中表达式 `?value1:value2` 的对应项是什么?

ruby-on-rails - Rails 导出到 CSV 文件

ruby - 如何在 Ruby 中获取 13 位整数的当前时间?

css - Glyphicon 在本地工作但在 Heroku 上不工作

ruby-on-rails - 为什么这个查询在 Heroku 上不起作用?