同一个应用程序中的 Heroku Delayed Job 和 Sidekiq

Heroku Delayed Job and Sidekiq in the Same app

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

我希望能够 运行 一个 sidekiq worker 以及其他工作,不涉及用户,我不需要进度条,因为它明显改善了内存Delayed::Job。

我可以 运行 在同一个 heroku 应用程序上同时使用 delayed job 和 sidekiq 吗?如果是这样,有什么我可以效仿的例子吗?我对如何设置 procfile 或这个感到困惑。

下面是我的 Procfile。我不知道如何同时启动 Delayed Job 和 Sidekiq?如果我只是在下面的工作行上添加 bundle exec sidekiq 之类的事情,它似乎可以取代延迟的工作?

过程文件:

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

有可能。

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

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

关于Procfile,可以注册多个worker 例如)

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