Heroku延迟工作和Sidekiq在同一个应用程序

时间:2016-12-12 04:28:52

标签: ruby-on-rails heroku delayed-job sidekiq

我目前正在我的Heroku实例上运行delayed :: job来处理不同类型的工作(导出大型列表等),而我正在使用显示作业进度条的真棒progress job gem发出请求的用户。

我希望能够运行一个sidekiq工作以及其他工作,而不涉及用户,我不需要进度条,因为它显然比Delayed :: Job更好的内存改进。

我可以在同一个heroku应用程序上运行延迟作业和sidekiq吗?如果有,我可以遵循任何例子吗?我对如何设置proc文件或者这个感到困惑。

以下是我的Procfile。我不知道如何启动延迟工作和Sidekiq?如果我只是在下面的工作线上添加bundle exec sidekiq,它似乎会取代延迟的工作?

Procfile:

web: bundle exec puma -t 5:5 -p ${PORT:-3000} -e ${RACK_ENV:-development}
web: bundle exec puma -C config/puma.rb
worker: bundle exec rake jobs:work

1 个答案:

答案 0 :(得分:2)

有可能。

首先,你应该解决像.delay这样的类似接口冲突问题。在这里:Run Delayed Jobs and Sidekiq at the same time

其次,您应该设置多个active_job适配器配置。在这里:http://edgeguides.rubyonrails.org/active_job_basics.html#backends

关于Procfile,您可以注册多个工作人员 例如)

web: bundle exec puma -t 5:5 -p ${PORT:-3000} -C config/puma.rb
worker: bundle exec sidekiq
delayedjobworker: bundle exec rake jobs:work

检查https://devcenter.heroku.com/articles/procfile#more-process-type-examples