我正在阅读一些传感器值,我想安排重复工作,以便重复每一个:00,:10,:15,:20,:25,:30,:35等。
我正在使用clockwork / delayed_job / activeJob& Rails 5中的工头,我能够检索并存储数据库的值。
我无法做的是完成每个任务/作业的时间,这意味着它们似乎在一系列中排队,然后立即执行。我可以看到他们可能一次运行5次,而整个任务可能需要几毫秒。
clock.rb
require 'clockwork'
require File.expand_path('../boot', __FILE__)
require File.expand_path('../environment', __FILE__)
module Clockwork
handler do |job, time|
puts "Running #{job}, at #{time}"
end
every(5.minutes, 'SensorJob') { Delayed::Job.enqueue SensorJob.new, queue: :default }
end
sensor_job.rb
class SensorJob < ActiveJob::Base
queue_as :default
def perform
@temperature = Random.new.rand(20..30)
@humidity = Random.new.rand(30..70)
SensorReading.create(temperature: @temperature, humidity: @humidity)
end
end
我错过了什么?
答案 0 :(得分:0)
every(5.minutes, 'SensorJob') { Delayed::Job.enqueue SensorJob.new, queue: :default }
所以我帮助你!你应该使用:
Delayed::Job.enqueue SensorJob.new.perform
而不是:
Delayed::Job.enqueue SensorJob.new
您必须使用SensorJob
的方法perform
!
祝你好运!!