2012-11-19 60 views
0

我有我的resque系統下面的配置(無軌只是西納特拉基地),在那裏我有一堆從YML文件resque狀態和resque調度爲循環任務

resque (1.23.0) 
resque-scheduler (2.0.0) 
resque-status (0.4.0) 

的經常性計劃的重複性作業的時間表出現在「計劃」選項卡上,當我點擊「立即排隊」按鈕時,狀態也出現在「狀態」選項卡上,問題是當重複作業自動運行時,它們不會出現在「狀態」 「標籤..我的resque_schedule.yml看起來像這樣

email_notifier: 
    every: 5m 
    custom_job_class: Process_Notification_Emails 
    queue: email_notifier 
    args: 
    description: "Process mail notifications" 

注意:這些預定作業實際上每5分鐘運行一次,並且行爲與預期的一樣,我遇到的唯一問題是它們不會出現在「狀態」選項卡上,除非我手動將它們排隊

任何想法我在這裏做錯了嗎?

回答

1

支持resque狀態(和其它定製作業)

一些Resque擴展名如resque狀態使用自定義的作業班, 略有不同的API簽名。 Resque-scheduler不會嘗試 支持所有現有和將來的自定義作業類別,而是它支持一個計劃標誌,因此您可以擴展自定義類別並使 支持預定作業。

讓我們假設我們有一個名爲FakeLeaderboard

class FakeLeaderboard < Resque::JobWithStatus 
    def perform 
    # do something and keep track of the status 
    end 
end 

一個JobWithStatus類,然後一個時間表:

create_fake_leaderboards: 
    cron: "30 6 * * 1" 
    queue: scoring 
    custom_job_class: FakeLeaderboard 
    args: 
    rails_env: demo 
    description: "This job will auto-create leaderboards for our online demo and the status will update as the worker makes progress" 

如果您的擴展不支持計劃的作業,您需要 擴展自定義作業分類s到支持#scheduled方法:

module Resque 
    class JobWithStatus 
    # Wrapper API to forward a Resque::Job creation API call into 
    # a JobWithStatus call. 
    def self.scheduled(queue, klass, *args) 
     create(*args) 
    end 
    end 
end 

https://github.com/bvandenbos/resque-scheduler#support-for-resque-status-and-other-custom-jobs

+0

謝謝你的反應,但我已經使用了最新版本的resque狀態(直接從git的主人),其具有resque-支持調度程序,它執行預定的方法...請看看這個https://github.com/quirkey/resque-status/blob/master/lib/resque/plugins/status.rb – Santthosh

+0

你是否調用'scheduled'方法?像'WorkingJob.scheduled(:queue_name,WorkingJob,@job_args)''? –