美文网首页
celery异步操作踩坑(python3.8+Django3.2

celery异步操作踩坑(python3.8+Django3.2

作者: 拼了老命在学习 | 来源:发表于2021-08-15 21:06 被阅读0次

官方文档:First steps with Django — Celery 5.1.2 documentation (celeryproject.org)

踩坑记录

1.celery高版本不兼容windows,因此需要pip install eventlet来兼容windows

因此在启动celery时执行命令式

celery -A meiduo_mall worker -l info -P eventlet
补充:celery worker工作模式
celery -A celery_tasks.main worker -l info -P eventlet -c 1000 #将进程改变为协程

celery模块结构

image.png

main.py

# Celery入口文件
from celery import Celery
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','meiduo_mall.settings_real.dev')
# 创建celery实例(生产者)
celery_app = Celery('meiduo_mall')

# 加载配置
celery_app.config_from_object('celery_tasks.config')

# 注册任务
celery_app.autodiscover_tasks(['celery_tasks.sms'])

config.py

# celery 配置文件

# 指定中间人
broker_url = 'redis://192.168.xx.xx:6379/10'

tasks.py

# 定义任务
from celery_tasks.sms.yuntongxun.ccp_sms import CCP
from . import constants
from celery_tasks.main import celery_app

# 使用装饰器装饰异步任务,保证celery识别任务
@celery_app.task(name='send_sms_code')
def send_sms_code(mobile,sms_code):
    send_ret = CCP().send_template_sms(mobile, [sms_code, constants.SMS_CODE_REDIS_EXPIRES // 60], constants.SEND_SMS_TEMPLATE_ID)
    return send_ret

工程文件中配置

image.png image.png

相关文章

网友评论

      本文标题:celery异步操作踩坑(python3.8+Django3.2

      本文链接:https://www.haomeiwen.com/subject/kpfpbltx.html