Python全系列 教程
3567个小节阅读:5931k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Django集成Celery步骤如下:
__init__.py
增加代码,加载Celery对象xxxxxxxxxx
# Broker配置,使用Redis作为消息中间件
BROKER_URL = 'redis://127.0.0.1:6379/0'
# BACKEND配置,这里使用redis
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
# 结果序列化方案
CELERY_RESULT_SERIALIZER = 'json'
# 任务结果过期时间,秒
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24
# 时区配置
CELERY_TIMEZONE='Asia/Shanghai'
更多配置: https://docs.celeryq.dev/en/latest/userguide/configuration.html
xxxxxxxxxx
import os
import django
from celery import Celery
from django.conf import settings
# 设置系统环境变量,安装django,必须设置,否则在启动celery时会报错
# celery_study 是当前项目名
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'celery_study.settings')
django.setup()
#实例化一个celery类
celery_app = Celery('celery_study')
#指定配置文件的位置
celery_app.config_from_object('django.conf:settings')
#自动从settings的配置INSTALLED_APPS中的应用目录下加载 tasks.py
celery_app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
注意
和settings.py文件同目录,一定不能建立在项目根目录,不然会引起 celery 这个模块名的命名冲突
__init__.py
增加代码在项目的__init__.py
中
xxxxxxxxxx
from .celery import celery_app
__all__ = ['celery_app']
xxxxxxxxxx
from celery import celery_app
# 定义任务函数
@app.task # 任务装饰器,将函数注册为celery任务
def send_email(name):
print(f'准备发送{name}的邮件')
time.sleep(5)
print( f'{name}的邮件发送成功')
return 'OK1'
@app.task
def send_sms(name):
print(f'准备发送{name}的短信')
time.sleep(5)
print( f'{name}的短信发送成功')
return 'OK2'
切换到项目目录中,执行命令
xxxxxxxxxx
celery -A django_celery12.celery worker --loglevel=INFO --concurrency=3 -P eventlet
实时效果反馈
1. 关于Djang中使用Celery,说法错误的是?
A 可以Django的配置文件settings设置celery的消息中间件地址
B celery.py需要创建与settings.py同级目录
C Django中定义任务与Celery任务没有变化
D Django需要指定tasks.py所在位置
答案
1=>D