Django-Celeryにスケジュールをセットして動くようにする@ローカル

monkeyjack人工植物草Imitation CeleryリーフグリーンFoliage Home Decor 0fc86a448d9ee0e32f6ad4b8bd12d311
- 出版社/メーカー: MonkeyJack
- メディア: ホーム&キッチン
- この商品を含むブログを見る
コメント
Celery(セロリ)のスケジューラーを使います
追記部分
#settings.py
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
'add-every-300-seconds': {
'task': '<app名>.tasks.test_def',
'schedule': timedelta(seconds=300),
'args': (16, 16)
},
}
CELERY_TIMEZONE = 'Asia/Tokyo'
なんかどうも5分に1回の起動が最短ペースの模様。数秒に一回だとcelery側でエラーがでた。
つぎに走らせる関数
#<app名>.tasks.py
@shared_task
def test_def():
print("scheduler is fine!")
celery.beat.SchedulingError: Couldn't apply scheduled task add-every-300-seconds: test_def() takes 0 positional arguments but 2 were given
こうしていると、このエラーがでる。どうもスケジューラー経由の実行だと、たくさん規定の引数をぶちこむようだ。
なので、
↓
こうする。*argsをつけて可変長で引数を受け入れられるようにする。
#<app名>.tasks.py
@shared_task
def test_def(*args):
print("scheduler is fine!")
これでよし。
Cerelyの起動もスケジューラー利用時は-Bオプションをつける
$ celery -A [proj名] worker -l info
↓
こうする
$ celery -A [proj名] worker -l info -B
これでうまく動いた!^^/