参考:
https://docs.celeryq.dev/en/stable/django/first-steps-with-django.html#django-first-steps
这里只记录一些要注意的地方
1、celery主文件
import os
from celery import Celery
# Set the default Django settings module for the 'celery' program.
# 这个是导入django环境的
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
# celery app实例
app = Celery('proj')
# - namespace='CELERY' 指定namespace,
# 如果给定了,表示celery相关配置属性格式变成:namespance_celery属性(必须全部大写),比如:原来叫broker_url,变成CELERY_BROKER_URL
# 使用ns可以避免与django中的其他配置选项名冲突的问题。
# 另外:
# celery的配置可以直接写在django的settings.py中,也可以自己去指定配置文件,如下面:
# 从django settings中读取:
# app.config_from_object('django.conf:settings', namespace='CELERY')
# 从自定的py文件中读取:
app.config_from_object("celery_tasks.config")
# Load task modules from all registered Django apps.
# 默认celery会自动去子应用下找tasks.py并加载定义的任务,你也可以自己手动传递告诉它去哪里找tasks.py
# app.autodiscover_tasks()
app.autodiscover_tasks([
"celery_tasks.sms",
"celery_tasks.email",
"celery_tasks.generate_index",
"celery_tasks.generate_detail",
"apps.users.celery_test"
])
项目__init__.py
# 这个必须导入,除非你不用shared_task装饰器。
# shared_task装饰器可以免除掉你在其他地方使用celery app时还需要导包的问题,就是类似flask的current_app这个作用。
from celery_tasks.main import app as celery_app
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
__all__ = ('celery_app',)
标签:集成,tasks,settings,app,py,django,celery
From: https://www.cnblogs.com/juelian/p/17742096.html