Django celerybeat スケジュールに month_of_year を設定できないようです。インデックスが範囲外エラーをスローし続けます。
ここに私のスケジュールがあります:
# Annual task to permanently delete all transactions that are older
# than 2 years old.
'annual-transaction-deletion': {
'task': 'project.tasks.annual_transactions_deletion',
'schedule': crontab(hour='2', minute=0, day_of_month=1, month_of_year=1)
}
上記の month_of_year を month_of_year=[1] および month_of_year='1' として設定しようとしました
次のスタック トレースが celerybeat ログに出力されます。
[2012-12-19 09:50:06,403: CRITICAL/MainProcess] celerybeat raised exception <type 'exceptions.IndexError'>: IndexError('list index out of range',)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/celery/apps/beat.py", line 100, in start_scheduler
beat.start()
File "/usr/local/lib/python2.7/dist-packages/celery/beat.py", line 422, in start
interval = self.scheduler.tick()
File "/usr/local/lib/python2.7/dist-packages/celery/beat.py", line 194, in tick
next_time_to_run = self.maybe_due(entry, self.publisher)
File "/usr/local/lib/python2.7/dist-packages/celery/beat.py", line 172, in maybe_due
is_due, next_time_to_run = entry.is_due()
File "/usr/local/lib/python2.7/dist-packages/djcelery/schedulers.py", line 65, in is_due
return self.schedule.is_due(self.last_run_at)
File "/usr/local/lib/python2.7/dist-packages/celery/schedules.py", line 502, in is_due
rem_delta = self.remaining_estimate(last_run_at)
File "/usr/local/lib/python2.7/dist-packages/celery/schedules.py", line 489, in remaining_estimate
next_hour, next_minute)
File "/usr/local/lib/python2.7/dist-packages/celery/schedules.py", line 389, in _delta_to_next
roll_over()
File "/usr/local/lib/python2.7/dist-packages/celery/schedules.py", line 372, in roll_over
months_of_year[datedata.moy],
IndexError: list index out of range
他にも多くのスケジュールを設定していますが、month_of_year は含まれていません。上記のスケジュールは、年に 1 回だけ実行する必要があります。これはセロリ lib のバグだと思わずにはいられませんが、誰かが私が間違っていることを証明してくれることを切望しています。明らかに、それがバグである場合、それを修正するためにライブラリ ファイルを変更することに頼りたくありません。どんな助けでも大歓迎です。