Python Django 2.0 集成 Celery 4.1 完整教程

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

本文详细讲解如何在 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 相关产品和应用

全部下载

专题列表