Celery配置解析
已于 2025年07月13日 16:32 修改
访问次数:0
这是 Django 项目中使用 Celery 的标准初始化方式。创建 your_project/celery.py 文件的主要目的是:
✅ 为什么要创建 celery.py?
因为 Celery 本身是一个独立于 Django 的任务队列系统。我们需要一个入口来:
- 初始化 Celery 应用实例
- 加载 Django 的配置(settings.py)
- 告诉 Celery 去哪里找任务(tasks)
🔍 逐行解释
from celery import Celery
import os
# 设置默认 Django 设置模块(告诉 Celery 要使用哪个 settings.py)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
这行代码让 Celery 知道要加载哪个 Django 项目的配置,否则它无法找到数据库、broker 等设置。
app = Celery('your_project')
初始化一个 Celery 实例,这个名字通常就是你的项目名,用于区分日志等。
app.config_from_object('django.conf:settings', namespace='CELERY')
告诉 Celery:去 Django 的 settings.py 中查找以 CELERY_ 开头的配置项。
比如:
# settings.py
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
app.autodiscover_tasks()
自动去你所有注册的 Django app 中查找 tasks.py 文件,导入里面的任务函数。
这就允许你在各个 app 中写:
# app1/tasks.py
from celery import shared_task
@shared_task
def my_task():
...
🧩 完整结构示例
项目结构通常如下:
your_project/
├── your_project/
│ ├── __init__.py ← 需要在这里导入 celery 应用
│ ├── celery.py ← Celery 配置文件
│ ├── settings.py
│ └── urls.py
├── app1/
│ ├── tasks.py ← 写任务的地方
│ └── views.py
✨ 最重要的一步:在 __init__.py 中初始化 Celery 应用
你必须加上这句,否则 Django 启动时不会加载 Celery 应用:
# your_project/__init__.py
from .celery import app as celery_app
__all__ = ('celery_app',)
🚀 启动方式
确保 Redis 已运行,然后你可以在项目根目录下启动 worker:
celery -A your_project worker --loglevel=info
其中 your_project 是指包含 celery.py 的 Django 主模块。
是否需要我给你提供完整的 settings.py 中的 Celery 配置示例,或整合 Django + Celery 的最小可运行项目模板?
评论(0)