Python Django 2.0 集成 Celery 4.1 完整教程

Ryan
Ryan
发布时间:2026-10-13| 6人浏览过
原创

本文详细讲解如何在 Python Django 2.0 项目中集成 Celery 4.1,实现异步任务处理与周期性定时任务。涵盖环境准备、Broker 配置、Worker 启动、Beat 调度器设置以及使用 django-celery-results 存储任务结果等关键步骤,帮助开发者快速搭建高效的任务队列系统。

环境准备与依赖安装

环境准备

确保系统已安装 Python 3.6 版本。

使用 pip 安装指定版本的 Django:pip install Django==2.0.1

使用 pip 安装指定版本的 Celery:pip install celery==4.1.0

安装 eventlet 以支持协程处理:pip install eventlet

安装消息中间件所需的 Erlang 语言和 RabbitMQ 服务器。

Django 项目配置

配置 Django 项目的 settings.py 文件。

在 settings.py 文件中添加以下 Celery 相关配置:


...
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672'

在与 settings.py 相同的目录下创建 celery.py 文件。

celery.py 文件内容如下:

注意将代码中的 project_name 替换为实际的项目名称。


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

# 设置环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')

# 注册Celery的APP
app = Celery('project_name')
# 绑定配置文件
app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动发现各个app下的tasks.py文件
app.autodiscover_tasks()

修改与 settings.py 同级目录下的 __init__.py 文件。


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

__all__ = ['celery_app']

定义异步任务

在具体的 APP 目录下创建 tasks.py 文件以定义任务。

tasks.py 文件内容如下:


# -*- coding: utf-8 -*-

from celery.task import task

# 自定义要执行的task任务
@task
def print_hello():
  return 'hello celery and django...'

配置定时任务

配置周期性任务或定时任务。

再次编辑 settings.py 文件,添加 CELERY_BEAT_SCHEDULE 配置:

关于定时任务的具体配置格式,可参考官方文档:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html


from celery.schedules import crontab
CELERY_BEAT_SCHEDULE = {
  # 周期性任务
  'task-one': {
    'task': 'app.tasks.print_hello',
    'schedule': 5.0, # 每5秒执行一次
    # 'args': ()
  },
  # 定时任务
  'task-two': {
    'task': 'app.tasks.print_hello',
    'schedule': crontab(minute=0, hour='*/3,10-19'),
    # 'args': ()
  }
}

启动服务与管理

启动 Celery Worker 和 Beat 定时任务服务。

启动 Worker 服务(需切换到 manage.py 同级目录下执行):


celery -A project_name worker -l info -P eventlet

启动定时任务调度器(Beat):


celery -A project_name beat -l info

备注:建议在生产环境中使用 supervisord 来管理上述两条命令,以确保服务稳定运行。

任务结果存储扩展

如需存储任务执行结果,需进行扩展配置。


pip install django-celery-results
Install APP
INSTALLED_APPS = (
  ...,
  'django_celery_results',
)

生成数据库表以存储结果:python manage.py migrate django_celery_results

在 settings 中配置结果后端:CELERY_RESULT_BACKEND = 'django-db',这将使任务执行结果信息存储在数据库中。

以上即为 Python Django 2.0 集成 Celery 4.1 的完整教程内容,供参考使用。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。