[英]Rails + Sidekiq: Sidekiq running in wrong environment
我有一個使用Capistrano部署的Rails 3應用程序。 我最近添加了Sidekiq。 它在我的開發中工作得很好。 我同時承載staging
和preview
在同一台服務器上,並且它是不正常的預覽。 當我在預覽時觸發工作程序時,它會轉到暫存並命中登台數據庫。 我是否缺少配置以在同一台服務器上共存2個sidekiq進程?
這是我的deploy.rb:
require "bundler/capistrano"
require 'sidekiq/capistrano' #<-- sidekiq
load "lib/deployer/deployer.rb"
set :application, "myapp"
set :scm, :git
set :repository, ...
set :scm_passphrase, ""
defaults
global_defaults
set :stages, ["staging", "preview"]
task :staging do
set :rails_env, "staging"
set :user, "deployer"
server "myserver.com", :app, :web, :db, :primary => true
defaults
end
task :preview do
set :rails_env, "preview"
set :user, "deployer"
server "myserver.com", :app, :web, :db, :primary => true
defaults
end
這是不一致的。 在預覽中,我剛剛執行了一個觸發工作的動作,並且它進行了4次(我可以在日志和控制台中看到),並且有一次它像預期的那樣點擊預覽。
我錯過了什么嗎?
我認為您正在尋找的解決方案與命名空間相關。
https://github.com/mperham/sidekiq/wiki/Advanced-Options#wiki-using-sidekiqs-configure-blocks
這是我在初始化程序中使用的內容。
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://localhost:6379/0',
namespace: "sidekiq_#{Rails.application.class.parent_name}_#{Rails.env}".downcase }
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://localhost:6379/0',
namespace: "sidekiq_#{Rails.application.class.parent_name}_#{Rails.env}".downcase }
end
因此,有助於了解操作的內容以及您為Sidekiq設置的工作人員和任何配置。 由於您使用的是Capistrano,您是否已為Sidekiq設置配置
https://github.com/mperham/sidekiq/wiki/Deployment
此外,這可能是一個糟糕的解決方案,但它至少可以讓你超越這個障礙。 您可以設置不同的redis隊列,以便創建登台隊列和預覽隊列。 為了實際工作,您可能必須將您不會使用檢查頻率的隊列設置為0。
https://github.com/mperham/sidekiq/wiki/Advanced-Options#wiki-queues
在您的工作人員中,嘗試添加
sidekiq_options :queue => QUEUE
並在您的登台環境中設置QUEUE = :staging
在QUEUE = :preview
環境中設置QUEUE = :preview
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.