LoginSignup
1

More than 5 years have passed since last update.

Djangoのdjango_celery_beatというモジュール

Posted at

Djangoつかって、
CeleryとCeleryBeatで定期的にタスクを仕込むときにハマりました。

CeleryBeat起動すると、PeriodicTaskをガンガン投げる事象が発生。
IntervalsでもCrontabsでもどっちもだめっぽい。

結論

TimezoneをUTC以外つかってはいけませんでした。

CELERY_TIMEZONE = 'Asia/Tokyo'

参考URL: https://github.com/celery/django-celery-beat/issues/129

以下、簡単な環境の説明です。
ざっくり以下のようなモジュールを入れてます。(PythonVersionは3.6.4です。)

Django==2.0.2
celery==4.1.0
django-celery==3.2.2
django_celery_beat=1.1.1

色々調べた結果,以下のような設定に落ち着く

BrokerにはrabbitMQを使ってます。

apps/settings.py

(Celery系のとこだけ抜粋)
#
# Celery for periodic tasks like a cron.
#
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers.DatabaseScheduler'

# use rabbitmq
CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = "rpc"

CELERY_ACCEPT_CONTENT = ['json']
CELERY_TIMEZONE = 'UTC'
CELERY_ENABLE_UTC = True

Djangoってあんまり日本語のサイトなくて辛いです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1