2016-07-04 6 views
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 

私は何をしないのですか?

答えて

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を使用する必要があります!

Good Luck !!

関連する問題