簡體   English   中英

Sidekiq 作業未在部署到 heroku 的 Rails 應用程序上排隊

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM