Python Celery异步任务被worker接收后未执行,目标文件未生成求助
问题原因
Celery 4.x及以上版本已经停止官方支持Windows系统,你当前使用的默认prefork并发池在Windows环境下无法正常执行已接收的任务,因此文件写入逻辑没有实际运行,自然不会生成test.txt。
解决方法
你可以选择以下任意一种方案修复:
方案1:更换兼容Windows的并发池(推荐,支持多并发)
- 安装eventlet依赖:
pip install eventlet如果Python3.10与最新版eventlet存在兼容问题,可指定安装兼容版本:
pip install eventlet==0.33.0
2. 启动worker时指定使用eventlet池:celery -A main worker -l INFO -P eventlet也可以换成gevent池,操作逻辑一致:先安装
gevent,启动参数改为-P gevent即可。方案2:使用单进程solo池(适合本地测试)
不需要额外安装依赖,直接修改启动命令即可:celery -A main worker -l INFO --pool=solo这个方案是单进程运行,并发性能低,仅适合本地开发调试使用。
注意事项
你代码中使用的是相对路径./test.txt,文件最终会生成在你执行celery启动命令的工作目录下,而非main.py脚本所在的目录,任务执行成功后可到对应目录下查找文件。
任务执行成功时Celery日志会输出类似Task main.hello[xxx] succeeded in 5.0s: 'hello world'的记录,可通过该日志确认任务是否正常跑完。
内容的提问来源于stack exchange,提问作者januw a
相关产品推荐
相关产品推荐

