2012-04-06 10 views
0

私はこれを使用しようとしましたsolutionしかし成功なし。タスクを実行する日を指定するにはどうすればよいですか?私のソリューションは、私はTUがジャンゴ・セロリとそれを実行してみてください特定の日に実行されるCeleryでタスクをスケジュールするにはどうすればよいですか?

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 

だったが、私はまだrun_everyが指定されていないというエラーが表示されます。

EDIT 1:

私が追加私のタスクを実行します。

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

辞書CELERYBEAT_SHEDULE

EDIT 2:私はのinitでrun_everyを指定すると

を - >self.run_every = None Iなし型オブジェクトに属性がないことをエラーで受け取るtotal_seconds

+0

は、あなたがそれを経由しないのはなぜcronの仕事ですか? – Ahsan

+0

タスクの作成に使用したコードを表示できますか? –

+0

私はこの – szaman

答えて

1

をサブクラス化して変更する場合は、親のに必ず連絡してください。 私はこれがあなたの問題を解決しますかなり確信している:

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

+0

残念ながら、この1つdidn'tヘルプ:( – szaman

関連する問題