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

如何通过 https 和 heroku 上的 rails 服务云端资产?

Heroku 上的 Rails 3.2 资产编译问题

Heroku上的Rails 4应用程序获得Elasticsearch IndexMissingException