为Sidekiq 6.0.3提供“ Sidekiq :: Worker不能包含在ActiveJob中”的sidekiq_options

时间:2019-11-30 07:14:27

标签: ruby-on-rails sidekiq rails-activejob

我的Gemfile.lock具有以下配置:

  sidekiq (6.0.3)
     connection_pool (>= 2.2.2)
     rack (>= 2.0.0)
     rack-protection (>= 2.0.0)
     redis (>= 4.1.0)

,我的工作如下:

class ApplicationExportJob < ActiveJob::Base
  include Sidekiq::Worker
  sidekiq_options retry: 1, queue: 'high_priority'

  def perform(*args)
    my_service.initialize
    my_service.build_csv
  end
end

文档指出,在最新版本的sidekiq中,可以跳过worker包含步骤,并且sidekiq选项将直接起作用。但是我遇到了错误“ Sidekiq :: Worker无法包含在ActiveJob中”,这是较早版本的已知情况。我该如何工作?

2 个答案:

答案 0 :(得分:0)

该错误是不言自明的。删除包含。

ActiveJob中的

sidekiq_options在Rails <6.0.2。中不起作用。

答案 1 :(得分:0)

需要明确的是,当您配置队列适配器时,您是在您的环境(生产)中执行此操作:

config.active_job.queue_adapter = :sidekiq

这将告诉 ActiveJob 使用 sidekiq 作为其作业运行器(Rails 中的默认运行器不适合生产)。

随着 ActiveJob 的引入,您不再需要显式地包含帮助器