2012-04-06 84 views
0

我嘗試使用這個solution但沒有成功。我怎樣才能指定一個月的哪一天執行任務?我的解決辦法我如何安排在每月的特定日期運行的芹菜任務?

class DayOfMonth(schedule): 

    def __init__(self, day=1): 
     self.day = day 

    def is_due(self, last_run_at): 
     now = datetime.datetime.now() 
     if now.month != last_run_at.month and now.day == self.day: 
      return True, 3000 
     return False, 3000 

    def __eq__(self, other): 
      if isinstance(other, DayOfMonth): 
       return self.day == other.day and self.month == other.month 
      return False 

我試着塗時用Django的芹菜運行它,但我仍然收到錯誤未指定run_every的。

編輯1:

我跑我的任務添加:

"my_task": { 
     "task": "util.tasks.CeleryManagementCommand", 
     "schedule": DayOfMonth(day=4), 
     "args": ('my_task',), 
    }, 

CELERYBEAT_SHEDULE字典

編輯2:

當我在初始化指定run_every - >self.run_every = None我會收到一個錯誤,即無類型對象沒有屬性total_seconds

+0

你爲什麼不這樣做通過cron工作? – Ahsan 2012-04-06 07:47:15

+0

你可以顯示用於創建任務的代碼嗎? – 2012-04-06 08:39:01

+0

因爲我必須使用芹菜這 – szaman 2012-04-12 11:24:25

回答

1

如果您繼承並更改init您最好確保致電父母的init。 我敢肯定,這將解決您的問題:

class DayOfMonth(schedule): 

    def __init__(self, day=1, *args, **kwargs): 
     super(DayOfMonth, self).__init__(*args, **kwargs) 
     self.day = day 

如果你檢查這一點,將闡明你遇到的錯誤淡淡的道: https://github.com/ask/celery/blob/master/celery/schedules.py#L33

+0

好吧,我會看看:) – szaman 2012-04-07 05:55:29

+0

不幸的是這一個沒有幫助:( – szaman 2012-04-12 11:23:57

相關問題