第一步: pip install celery
第二部
我们需要创建一个main.py
from celery import Celery
# 创建Celery实例
celery_app = Celery('mall') # 生产者
# 加载配置
celery_app.config_from_object('celery_tasks.config')
# 注册任务
celery_app.autodiscover_tasks(['celery_tasks.sms', 'celery_tasks.email'])
创建配置文件config
# 指定中间人,消息对列,任务队列,容器,使用redis
broker_url = 'redis://127.0.0.1/10'
第三步
创建tasks.py 名字必须
# 定义任务
# 例如:
@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
启动
clecry -A celery_tasks.main worker -l info
报错:
1.TypeError: ‘TaskRegistry’ object is not callable
将@celery_app.tasks 改为@celery_app.task
2.TypeError: argument 1 to @task() must be a callable
@celery_app.task()中的值没有参数
3
原因:celery是一个单独的进程,需要配置django的环境变量
解决方法:
在celery入口添加
import os
if not os.getenv(‘DJANGO_SETTINGS_MODULE’):
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘meiduo_mall.settings_page.dev’