まわ

勉強したことや遊びのこと

DjangoからCeleryへのタスクがつながらず、サーバーがずーっと応答しない!ときのCeleryセッティングのチェック項目

コメント

Celery(セロリ)が動きそうで動かないことがあります。djangoローカルサーバーがviewを呼び出したまま止まるのでエラーも吐かないのでなにをしてるかよくわかりませんでした。チュートリアル記事も何度も見直したのに動かない・・・こないだは動いたのに・・・なぜだ・・・これを次回から回避できます。

チェック項目

  • その1:pip install celeryは済んでいる

  • その2:pip install redisは済んでいる

  • その3:settings.pyにBROER_URLなどの記載は済んでいる

#settings.py参考例(引用です)

BROKER_URL = 'redis://localhost'
CELERY_RESULT_BACKEND = 'redis'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']

引用元

Celery 3.1 を Django で使う

  • その4:settings.pyがあるディレクトリの__init__.pyceleryに必要なコードを追記してある(今回はこれが抜けてた!追記すると動いた^^;)
#__init__.py

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ['celery_app']
  • その5:task.pyに非同期処理する関数を@shared_taskデコレータつきで書いてる

  • その6:settings.pyがあるディレクトリのcelery.pyの追加と書き込みは済んでいる

  • その7:$brew install redisは済んでいる

  • その8:$redis-serverは動いている

  • その9:$celery -A [proj名] worker -l infoでワーカーは動いている

その8とその9あたりは、下記を参照ください

k-mawa.hateblo.jp

と、いうわけでおおまかに書いても9個もチェック項目があるという・・・