2
センサーの値をいくつか読んでおり、00、:10、:15、:20、:25の繰り返しでスケジュールを設定したい:30、:35などClockwork/Delayed_Job/ActiveJobでスケジューリングして5分ごとに実行する(ラウンド)
Rails 5でclockwork/delayed_job/activeJob & foremanを使用していて、値を取得してデータベースに格納することができます。
私ができないことは、時間内に各タスク/ジョブを完了することです。つまり、それらは一連のキューに入れられて一度に実行されるように見えます。一度に5回実行することができますが、タスク全体には数ミリ秒かかる場合があります。
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
sensor_job.rb
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
私は何をしないのですか?