[英]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.