2015年9月9日 星期三

[RoR]工作排程工具Clockwork

之前為了大量資料轉入採用了Sidekiq,但是因為Sidekiq只有處理Job而沒有包含工作排程,而Clockwork就是可以用來處理排程問題。


Clockwork實作


  • 步驟1:安裝clockwork,在Gamfile中新增以下指令後,執行bundle install

gem 'clockwork'

  • 步驟2:在Project目錄下新增排程控制檔,本範例中的檔名是clock.rb。排程的方式可以by 秒、分、時、日,也可以指定特定起始時間。

require 'clockwork'
require './config/boot'
require './config/environment'
module Clockwork
    handler do |job, time|
        puts "Running #{job}, at #{time}"
        "#{job}".constantize.perform_later
    end
    every(10.seconds, 'TestJob')
    # every(3.minutes, 'less.frequent.job')
    # every(1.hour, 'hourly.job')
    # every(1.day, 'midnight.job', :at => '00:00')    
end
  • 步驟3:在Terminal下執行,要注意的是如果有跟sidekiq搭配的話,sidekiq也要開啟

clockwork clock.rb

Clockwork執行結果


左邊的是Clockwork右邊的是Sidekiq,可以看出Clockwork在每過10秒便會送出一個Job Request給Sidekiq進行處理,範例中經過了20秒,共送出兩次TestJob給Sidekiq。






沒有留言: