ruby-on-rails - 如何分离开发和生产 sidekiq 工作人员

标签 ruby-on-rails sidekiq

我在生产 Rails 服务器上运行 sidekiq,它的一些队列工作人员最终出现在我的开发 sidekiq 实例中,因此导致了一堆错误。我的开发 sidekiq 实例也会发生同样的情况。当我处于应用程序的开发版本中并单击启动 sidekiq 工作程序的某些内容时,它有时会尝试在生产 sidekiq 实例中运行它,而生产数据库没有相同的信息。

是否有适当的方法来分离这些排队的作业,以便它们仅在启动它们的实例中运行?

最佳答案

Sidekiq 使用 Redis 来存储排队作业。默认情况下,所有 sidekiq 实例都将使用默认的 Redis 数据库。您可以通过在 config/initializers/sidekiq.rb 中创建初始化程序来更改此设置

if Rails.env == :production 
  redis_host = '127.0.0.1'
  redis_port = 6379
  redis_db = 1
else
  redis_host = '127.0.0.1'
  redis_port = 6379
  redis_db = 2
end

Sidekiq.configure_server do |config|
  config.redis = { url: "redis://#{redis_host}:#{redis_port}/#{redis_db}" }
end

Sidekiq.configure_client do |config|
  config.redis = { url: "redis://#{redis_host}:#{redis_port}/#{redis_db}" }  
end

并将 redis_hostredis_portredis_db 更改为适当的值。这样每个环境都会使用单独的Redis数据库。另外,在启动 sidekiq 实例时,不要忘记传递适当的环境,例如:

bundle exec sidekiq -e production

关于ruby-on-rails - 如何分离开发和生产 sidekiq 工作人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59491804/

相关文章:

ruby-on-rails - 如何使 Rails.cache(内存缓存)与 Puma 一起工作?

ruby-on-rails - 如何解决服务器启动的弃用错误?

ruby-on-rails - RoR 扩展 ActiveRecord::relation with undestroy_all

ruby-on-rails - Rails,全局城市、国家、州的解决方案,没有数据库

ruby-on-rails - 当从应用程序(而不是控制台)调用时,如何让 ActiveJob 在 Heroku 上的 Sidekiq 中排队作业?

ruby-on-rails - Sidekiq WebUI 在一段时间后停止显示工作人员

ruby-on-rails - Sidekiq 独特工作的奇怪行为

ruby-on-rails - 不允许用户在 ruby​​ on rails 中提交带有空字段的表单

ruby-on-rails - 可以避免 Heroku 上的 ActiveRecord::ConnectionTimeoutError 吗?

ruby - sidekiq 取消计划作业列表