关于Celery4.x以上在Win10下报错解决办法

报错提示:

ValueError: not enough values to unpack (expected 3, got 0)

顺着代码路径去找源文件,发现是缺少了一个参数,可是摸索半天不知道该传什么。。。
于是把思维转向面向google和面向segmentfault解决问题,最后找到了解决办法:

首先,报一下环境:

系统:win10
python版本:3.6
celery版本:4.0

发现这个问题主要集中在Win10的celery下,一旦运行任务跑worker就会报错,解决办法如下:

一、更换celery版本至4.X以下

目前来看主要是celery4.0以上的版本才出现问题,如果本身项目对版本功能细节不敏感,可以考虑降版本。

二、安装eventlet

用celery4.0主要还是看重它跟django配合,不用再另外继承django-celery,那么就不打算降版本了。可以这样:

pip install eventlet

运行worker的时候加上一个参数:

celery -A xxxx worker -l info -P eventlet

原理:首先要知道eventlet是一个python库,它又这样的功能:一个是处理和网络相关的,另一个可以通过协程实现并发。刚好celery的线程池是支持eventlet扩展的。初步可以判断,在win10下,celery自带的worker池并不能有效释放出任务去执行,那么替换成eventlet就成功了。(至于为什么默认的worker池会出问题,还有待研究)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值