Mawa Town

Mawaという人が作る小さな町でMawaTownです。技術と音楽が好き。

Celery複数タスクをスケジュールする方法

コメント

Django+Celeryで非同期処理でスケジューラー登録しているタスクは現在ひとつですが、この度複数にする必要があり、複数タスクをスケジュールに組み込む方法を探しました。

参考資料

公式ドキュメントに例そのままは見つけられなかったのですが、StackOverflowにはありました。これを試します

stackoverflow.com

これで無事動きました!

#settings.py

from datetime import timedelta

CELERYBEAT_SCHEDULE = {
    'add-every-300-seconds': {
        'task': '<app名>.tasks.test_def',
        'schedule': timedelta(seconds=300),
        'args': (16, 16)
    },
    'add-every-60-seconds': {
        'task': '<app名>.tasks.test_def_two',
        'schedule': crontab(minute='*/1'), #1分毎に実行
        'args': (16, 16)
    },
    'abc': {
        'task': '<app名>.tasks.test_def_three',
        'schedule': crontab(minute='10', hour='0', day_of_month='1'), #月初の0時10分に実行
        'args': (16, 16)
    },
    'defgh': {
        'task': '<app名>.tasks.test_def_three',
        'schedule': crontab(minute='10', hour='0', day_of_month='1-30'), #毎月1〜30日までの期間は毎日0時10分に実行
        'args': (16, 16)
    },
}

CELERY_TIMEZONE = 'Asia/Tokyo'