【问题标题】:sidekiq_options giving "Sidekiq::Worker cannot be included in an ActiveJob:" for Sidekiq 6.0.3Sidekiq_options 为 Sidekiq 6.0.3 提供“Sidekiq::Worker 不能包含在 ActiveJob 中:”
【发布时间】:2020-03-25 14:22:09
【问题描述】:

我的 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 include 步骤可以跳过,sidekiq 选项将直接起作用。但是我遇到了错误“Sidekiq::Worker 不能包含在 ActiveJob 中”,这是旧版本的已知情况。我怎样才能让它工作?

【问题讨论】:

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


    【解决方案1】:

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

    ActiveJob 中的sidekiq_options 不适用于 Rails

    【讨论】:

      【解决方案2】:

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

      config.active_job.queue_adapter = :sidekiq

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

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

      【讨论】:

        猜你喜欢
        • 2020-03-29
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-17
        • 2014-12-21
        • 2023-03-10
        • 1970-01-01
        相关资源
        最近更新 更多