如何分离开发人员和生产人员

问题描述 投票:0回答:1

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

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

ruby-on-rails sidekiq
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.