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