Windows10下Django3环境运行Celery Flower报错求助
解决Windows 10 + Python 3.8下Flower启动的NotImplementedError错误
我之前在Windows 10上用Python 3.8开发Django项目时,也碰到过一模一样的Flower启动错误。这个问题本质是Python 3.8在Windows上默认事件循环的兼容性问题——它用的ProactorEventLoop和Flower依赖的Tornado框架不兼容,导致抛出NotImplementedError。下面是几个亲测有效的解决办法:
方法1:临时切换事件循环(命令行快速解决)
在启动Flower之前,先通过环境变量强制指定使用兼容的事件循环:
命令提示符(CMD)下:
set ASYNCIO_EVENT_LOOP_POLICY=asyncio.WindowsSelectorEventLoopPolicy && celery -A proj flower
PowerShell下:
$env:ASYNCIO_EVENT_LOOP_POLICY="asyncio.WindowsSelectorEventLoopPolicy"; celery -A proj flower
执行这条命令后,Flower就能正常启动并监听http://localhost:5555了。
方法2:修改Flower代码(永久生效)
如果你不想每次启动都输环境变量,可以直接修改Flower的启动代码:
- 找到你虚拟环境中Flower的
app.py文件,路径大概是你的虚拟环境目录\Lib\site-packages\flower\app.py - 打开文件,找到
start方法,在方法开头添加以下代码:
import asyncio asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
- 保存文件后,再直接执行
celery -A proj flower就不会再报错了。
方法3:降级Python版本(备选方案)
如果上面的方法都不想折腾,也可以考虑把Python版本降到3.7及以下——因为Python 3.7在Windows上默认使用的就是SelectorEventLoop,天生和Flower兼容,不会出现这个问题。
另外提醒一下,确保你的Celery、Flower和Tornado版本互相匹配,比如Celery 5.x搭配Flower 1.x,避免出现其他版本冲突问题。
内容的提问来源于stack exchange,提问作者jhon1946
相关产品推荐
相关产品推荐

