在配置/初始化/ sidekiq.rb
:
class SidekiqErrorHandler
def call(worker_class, job, queue, redis_pool)
begin
Sidekiq.redis {|conn| conn.ping}
yield
rescue
klass = worker_class.constantize
klass.new.perform(*(job['args']))
false
end
end
end
的constantize
是不必要在Rails 4的應用程序,但我發現它需要在導軌5的應用程式最近。
Sidekiq.configure_client do |config|
config.redis = { :size => 1 }
config.client_middleware { |chain| chain.add SidekiqErrorHandler } unless Rails.env.test?
end
這也是得心應手(在同一個文件):
if Rails.env.development?
require 'sidekiq/testing'
Sidekiq::Testing.inline!
end
這使得sidekiq作業在線運行,以便輕鬆調試本地。