2024年1月19日金曜日

Django と celery の連携方法

Django と celery の連携方法

概要

Django と Celery を連携してみました
公式のドキュメントだと django 側には celery 連携のドキュメントなく celery 側にあるようです

環境

  • macOS 11.7.10
  • Python 3.11.6
  • Django 5.0.1
  • celery 5.3.6
  • Redis 7.2.1

mysite/settings.py

一部抜粋

# for celery
CELERY_CACHE_BACKEND = "default"
CELERY_BROKER_URL = "redis://localhost:6379"

polls/celery.py

import os

from celery import Celery

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

app = Celery("polls")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()


@app.task(bind=True, ignore_result=True)
def debug_task(self):
    print(f"Request: {self.request}")

polls/__init__.py

from .celery import app as celery_app

__all__ = ("celery_app",)

ワーカー起動

  • pipenv run celery -A polls worker -l INFO

動作確認

  • pipenv run python manage.py shell
from polls.celery import debug_task
debug_task.apply_async()

最後に

連携自体はそれほど難しくないようです
設定やタスクは celery の公式にあるように記載しましたが別ファイルで管理してもいいかなと重ます

参考サイト

0 件のコメント:

コメントを投稿