Celery在Windows系统上启动后能接收任务但不执行,且无错误提示。根本原因是Windows不支持Celery原生prefork并发(缺少fork调用),需借助eventlet模拟环境。改用eventlet池启动后任务成功执行。该问题常见于Windows部署,需安装eventlet并设置并发池为eventlet,此方案已验证有效。
折腾了一整天,全耗在Celery的异常处理上,确实有点心力交瘁。不过好在最后总算把问题理清了,记录一下,给遇到同样坑的朋友参考。
网上搜了一圈,问的人不少,但真正能用的答案几乎没有。只能自己一个个试,最后发现两个问题竟然指向同一个原因——说来也怪,是因为换了一次电脑。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
服务启动没问题,日志看起来一切正常。


启动时改用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


以上是这次踩坑的详细记录,给遇到类似问题的朋友一个参考。希望同样被Windows+Celey折腾过的人,能早点看到这个。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述