折腾了一整天,全耗在Celery的异常处理上,确实有点心力交瘁。不过好在最后总算把问题理清了,记录一下,给遇到同样坑的朋友参考。
- 问题一:Django 1.11环境下用Celery 4,报错ValueError: not enough values to unpack (expected 3, got 0)
- 问题二:Celery正常启动后能收到任务,但就是不执行,也没有任何错误提示……
解决方案
网上搜了一圈,问的人不少,但真正能用的答案几乎没有。只能自己一个个试,最后发现两个问题竟然指向同一个原因——说来也怪,是因为换了一次电脑。
1、先确认Celery服务启动正常
服务启动没问题,日志看起来一切正常。

2、任务能收到,也有提示信息

3、解决办法
启动时改用eventlet方式:
pip install eventlet celery -A celery_tasks.main worker -l info -P eventlet -c 10 # -c是协程数量,生产环境可以用1000
原因:
真相是,Celery在Windows下天生跑不了任务,必须借助eventlet这个‘外设’来模拟并发环境。
Unable to run tasks under Windows
4、成功后的截图,心情终于轻松了


总结
以上是这次踩坑的详细记录,给遇到类似问题的朋友一个参考。希望同样被Windows+Celey折腾过的人,能早点看到这个。
