项目中要使用celery,今天在配置时遇到了很多问题,稍微记录一下
参考了这个博主的配置步骤,这里只讲启动遇到的问题:
纯纯干货Django+Celery+Redis在Windows环境下运行
注:celery使用要先安装启动redis,具体这里就不阐述了
但我也遇到了其他问题,现在说一下启动的问题。
1、启动前需执行数据迁移
python manage.py migrate (可不用执行 makemigrations)
2、启动celery:在项目主目录manage.py同级启动命令:
注:celery_tasks文件需要与manage.py在同级,否则若在视图层调用定义的tasks方法会找不到文件夹No module named ‘celery_tasks’
celery -A celery_tasks.main worker -l info
3、【按需】若在config.py设置了定时任务,则还要启动定时任务命令:
celery -A celery_tasks.main beat -l info
4.1、【按需】第2步或第3步报错ValueError: not enough values to unpack (expected 3, got 0)
原因:win10调用celery4.x版本以上的都会出现此错误,解决方法如下:
pip install eventlet
4.2、【按需】如有4.1的报错,第2步启动celery 改为如下命令
celery -A celery_tasks.main worker -l info -P eventlet
4.3、【按需】执行4.2命令时报错 module ‘lib‘ has no attribute ‘OpenSSL_add_all_algorithms‘
原因:安装的 cryptography库与你现在的使用的环境不兼容导致的,可能是因为cryptography的版本太高,需要进行降级
pip install cryptography==38.0.4
4.4、【按需】执行4.3 时报错无权限 Could not install packages due to an OSError:[WinError 5]拒绝访问
管理员打开cmd窗口,进入项目文件
pip install cryptography==38.0.4
5、总结:
有第4.1报错:以后每次项目启动就(redis要启动)
# 启动celery
celery -A celery_tasks.main worker -l info -P eventlet
# 【按需】启动celery定时任务
celery -A celery_tasks.main beat -l info
无第4.1报错:以后每次项目启动就(redis要启动)
# 启动celery
celery -A celery_tasks.main worker -l info
# 启动celery定时任务
celery -A celery_tasks.main beat -l info