2016-07-04 18 views
2

일부 센서 값을 읽었으며 00, : 10, : 15, : 20, : 25를 반복하기 위해 되풀이 작업을 예약하고 싶습니다. , : 30, : 35 등Clockwork/Delayed_Job/ActiveJob을 통한 스케줄링이 매 5 분마다 실행됩니다 (원형)

레일 5의 clockwork/delayed_job/activeJob & 포먼을 사용 중이며 값을 검색하여 데이터베이스에 저장할 수 있습니다.

내가 할 수없는 일은 그 시간에 각 작업/작업을 완료하는 것입니다. 즉, 일련의 대기열에 포함 된 다음 즉시 실행되는 것으로 보입니다. 한 번에 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

나를 도왔습니다! 설명 아래 :

every(5.minutes, 'SensorJob') { Delayed::Job.enqueue SensorJob.new, queue: :default } 

그래서 도와 드리겠습니다. 당신은 사용해야

Delayed::Job.enqueue SensorJob.new.perform 

대신 :

Delayed::Job.enqueue SensorJob.new 

당신은 SensorJob의 방법 perform을 사용해야합니다!

행운을 빌어 요 !!