簡體   English   中英

Rails + Sidekiq:Sidekiq在錯誤的環境中運行

[英]Rails + Sidekiq: Sidekiq running in wrong environment

我有一個使用Capistrano部署的Rails 3應用程序。 我最近添加了Sidekiq。 它在我的開發中工作得很好。 我同時承載stagingpreview在同一台服務器上,並且它是不正常的預覽。 當我在預覽時觸發工作程序時,它會轉到暫存並命中登台數據庫。 我是否缺少配置以在同一台服務器上共存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 = :stagingQUEUE = :preview環境中設置QUEUE = :preview

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM