celery报错锦集及解决方案

celery报错锦集及解决方案

到网上查看了很多资料都没有用 写一个博客记录一下。

在view.py中调用异步函数的时候导包除了问题。之前一直以为是绝地路径。害~~~

import os, sys
from opwf.settings import BASE_DIR, SECRET_KEY
sys.path.insert(0, os.path.join(BASE_DIR, '../celery_task'))
from main import send_sms_code  # 必须这么写, 从main中导包

需要在配置celery的文件内添加django环境

import django

# 1.添加django项目根路径
CELERY_BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.join(CELERY_BASE_DIR, '../opwf'))

# 2.添加django环境
os.environ.setdefault("DJANGO_SETTINGS_MODULE","opwf.settings")
django.setup() # 读取配置

或者:

不要讲 add_together 方法写在主模块中,因为注册时注册的task为模块名.add_together, 而调用时task为 main.add_together

再或者:

不要将异步任务函数的定义和调用写到同一个文件中

我们需要在整个django项目外运行命令 可以参考上方的目录图片。。。

celery -A celery_task worker -l info -P eventlet
原文地址:https://www.cnblogs.com/tjw-bk/p/14110244.html