【问题标题】:Sidekiq With WheneverSidekiq 与任何时候
【发布时间】:2016-08-09 11:28:17
【问题描述】:

我随时都在使用 sidekiq 来安排工作。另外,使用sidekiq-client-cli gem,它是 sidekiq 的命令行客户端,允许 cron 作业与 sidekiq 交互。

这是我的活动工作文件:

# jobs/clone_record_job.rb

class CloneRecordJob < ActiveJob::Base
    queue_as :myapps

    def perform(*args)
      Core::Block.where(release_date: Date.today - 30.days).each do |block|
        new_block = Core::Block.new(block.attributes)
        new_block._id = BSON::ObjectId.new
        new_block.save
      end
    end
end

计划文件:

# config/schedule.rb
job_type :sidekiq, "cd :path && :environment_variable=:environment bundle exec sidekiq-client -q myapps push :task :output"

every 1.minute, :roles => [:app] do
    sidekiq "CloneRecordJob"
end

Sidekiq 日志:

2016-08-09T10:13:41.138Z 23668 TID-xvshg WARN: {"class":"CloneRecordJob","queue":"myapps","args":[],"retry":true,"jid":"98cb26a0dd7410a9be0f0200","created_at":1470737621.1380692,"enqueued_at":1470737621.1382036}
2016-08-09T10:13:41.141Z 23668 TID-xvshg WARN: NoMethodError: undefined method `jid=' for #<CloneRecordJob:0x0000000715cc30>

注意:

我确信当从控制器调用时,这项工作是有效的。

# example method
def my_action
  CloneRecordJob.perform_now
end

【问题讨论】:

    标签: ruby-on-rails sidekiq whenever


    【解决方案1】:

    CloneRecordJob 是 ActiveJob,而不是 Sidekiq::Worker。您不能将 sidekiq-client-cli 与 ActiveJobs 一起使用。

    【讨论】:

    • 哦,我明白了。我已经阅读了一些 wiki,现在我认为我的情况需要一个 Sidekiq::Worker,例如:HardWorker
    猜你喜欢
    • 2015-09-24
    • 2016-11-17
    • 1970-01-01
    • 2017-11-13
    • 2016-02-18
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多