Rails 6.1:Heroku 上的作业将使用 Async 而不是 Sidekiq
Posted
技术标签:
【中文标题】Rails 6.1:Heroku 上的作业将使用 Async 而不是 Sidekiq【英文标题】:Rails 6.1: Jobs on Heroku going to Async instead of Sidekiq 【发布时间】:2021-10-26 16:01:50 【问题描述】:我一直在尝试让 Sidekiq 在 Heroku 上工作,但无法让我的应用使用它来代替异步(默认)。 在我的本地一切正常,我可以看到工作进入 sidekiq,但在生产(heroku)上,应用程序继续使用异步适配器。
第二个工作人员 dyno 启动,sidekiq 似乎已正确安装,因为 Web UI 加载正常。我已经尝试了 3 个不同的 redis 插件,我目前正在使用 heroku-redis。
我在下面包含了一些我的配置文件,我尝试关注this medium post。
*/production.rb
config.active_job_queue_adapter = :sidekiq
*Procfile
web: bin/rails server -p $PORT:-5000 -e $RAILS_ENV
release: bin/rails db:migrate
worker: bundle exec sidekiq -c 2
我尝试了不同版本的 redis.rb 初始化程序,目前使用的是 heroku 文档中推荐的那个。
*/intializers/redis.rb
$redis = Redis.new(url: ENV["REDIS_URL"], ssl_params: verify_mode: OpenSSL::SSL::VERIFY_NONE )
*/initializers/sidekiq.rb
if ENV['REDIS_URL']
Sidekiq.configure_client do |config|
config.redis = url:ENV['REDIS_URL'], size: 1, network_timeout:5
end
Sidekiq.configure_server do |config|
config.redis = url:ENV['REDIS_URL'], size: 12, network_timeout:5
end
end
我会喜欢任何想法,谢谢!
【问题讨论】:
【参考方案1】:您在config/environments/production.rb
文件中输入了错字。而不是:
config.active_job_queue_adapter = :sidekiq
尝试:
config.active_job.queue_adapter = :sidekiq
注意active_job
后面的点(.
)而不是下划线(_
)。
【讨论】:
好吧,做到了。非常感谢!以上是关于Rails 6.1:Heroku 上的作业将使用 Async 而不是 Sidekiq的主要内容,如果未能解决你的问题,请参考以下文章
Heroku 推送错误:“无法检测到 rake 任务”(Rails 6.1)
在 Heroku 中运行的 Rails 应用程序的脉冲或 cron 作业
Heroku上的现有Ruby on Rails Web应用程序(PostgreSQL),Devise身份验证,需要为移动支持添加Rails API