[英]Sidekiq with Heroku & Rails : my Jobs are stucks in queue on Heroku
[英]Sidekiq jobs not queueing on rails app deployed to heroku
我有一个使用 sidekiq、sidekiq-status 和 sidekiq 批处理的 rails 应用程序:
gem "sidekiq"
gem "sidekiq-status"
# freemium version vs sidekiq pro https://github.com/breamware/sidekiq-batch
gem "sidekiq-batch"
# slim & sinatra for sidekiq monitoring
gem "sinatra", "2.0.0.beta2", require: nil
当我在本地运行 sidekiq 和 redis 时,作业进程。 当部署到 heroku 时,作业会排队,但不会处理。
我正在使用 Rediscloud,并将环境变量REDIS_PROVIDER
设置为REDISCLOUD_URL
,并将REDISCLOUD_URL
和REDIS_URL
设置为从 Rediscloud 插件生成的 url。
档案:
high_worker: DB_POOL=$SIDEKIQ_DB_POOL bundle exec sidekiq -c $SIDEKIQ_CONCURRENCY -t 8 -q high
default_worker: DB_POOL=$SIDEKIQ_DB_POOL bundle exec sidekiq -c $SIDEKIQ_CONCURRENCY -t 8 -q default
low_worker: DB_POOL=$SIDEKIQ_DB_POOL bundle exec sidekiq -c $SIDEKIQ_CONCURRENCY -t 8 -q low
当我在 heroku 上手动启动队列时,即heroku run DB_POOL=10 bundle exec sidekiq -c 10 -t 8 -q low -a {my_app_name}
,队列处理这些作业。
我的配置中缺少什么?
您的Procfile
定义了进程类型,但不会使它们运行。
每种流程类型都可以在零个或多个测功机上运行。 要更改每种过程类型的测功机数量,您可以使用heroku ps:scale
命令。 例如,要将您的low_worker
流程类型扩展到一种测功机,您可以这样做
heroku ps:scale low_worker=1
运行测功机需要花钱和/或消耗免费的测功机时间,因此请相应地进行预算。
或者,您可以通过 Heroku Scheduler 让您的作业在预定时间运行。 这不太适合应该连续运行的任务,但它是一个选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.