Sidekiq 与 Whenever
Sidekiq With Whenever
我随时使用 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
CloneRecordJob 是一个 ActiveJob,而不是 Sidekiq::Worker。您不能将 sidekiq-client-cli 与 ActiveJobs 一起使用。
我随时使用 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
CloneRecordJob 是一个 ActiveJob,而不是 Sidekiq::Worker。您不能将 sidekiq-client-cli 与 ActiveJobs 一起使用。