Django
集成 celery
与执行结果监控
celery
架构图
一、搭建 Django
项目
-
环境模块安装
pip install django==3.2
pip install celery
pip install redis
# window 环境下需要安装eventlet
pip install eventlet
-
创建
django
项目django-admin startproject django_celery
-
修改
settings
配置文件# 1-修改代码文件,程序自动重启
# 2-Django程序出现异常时,向前端显示详细的错误追踪信息
DEBUG = True
# 允许访问的主机
ALLOWED_HOSTS = ['*']
# 语言
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# 时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
-
配置路由与视图并测试项目
-
在工程同名项目文件夹中创建
views
视图文件,并创建视图函数# django_celery/django_celery/views.py
from django.http import HttpResponse
def test_celery(request):
return HttpResponse('邮件发送成功')
-
在
urls
文件中设置路由映射# django_celery/django_celery/urls.py
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('celery/', views.test_celery)
]
-
运行测试
-
启动项目
python manage.py runserver 8080
-
访问测试
http://127.0.0.1:8080/celery/
-
-
二、在项目中集成 celery
-
版本说明
Celery 5.3.x支持Django 2.2 LTS或更新版本
-
在工程同名子应用中创建
celery.py
模块,定义celery
实例# django_celery\django_celery\celery.py
import os
from celery import Celery
# 1. 导入django配置; 后续便于使用django组件功能
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_celery.settings')
# 2. 实例化celery对象
app = Celery('django_celery')
# 3. 从django配置文件中导入celery相关的配置; 如果添加 namespace='CELERY' 参数,则celery的配置参数需要添加 "CELERY_" 的前缀
app.config_from_object('django.conf:settings')
# 4. 在django所有应用中自动搜索 tasks.py 文件, 作为任务文件
app.autodiscover_tasks()
-
django
项目的配置文件settings
中配置celery
相关配置# ---------------- celery 相关配置 ----------------------
# Broker配置,使用Redis作为消息中间件
BROKER_URL = 'redis://127.0.0.1:6379/1'
# BACKEND配置,使用Redis作为结果仓库
RESULT_BACKEND = 're