pycharm使用fastapi/uvicorn无法reload的问题
一、前言
1、解决方法
(1)控制台执行uvicorn指令
pycharm的问题,建议控制台直接输uvicorn main:app --reload,而不是在代码里 uvicorn.run() 运行
(2)将uvicorn版本降到0.20.0(推荐)
pip install uvicorn==0.20.0
2、原因探究
相关issue如下:
https://github.com/encode/uvicorn/issues/2000
https://youtrack.jetbrains.com/issue/PY-60962/os.killpid-signal.CRTLCEVENT-ignored-when-running-python-program-from-Pycharm
https://youtrack.jetbrains.com/issue/PY-63296/Pycharm-FastAPI-uvicorn-run-vs-terminal-differences-and-issue-with-slow-reloading-when-it-works
https://youtrack.jetbrains.com/issue/PY-63358
gpt省流(kimi)
问题概述:
在PyCharm中使用uvicorn和FastAPI时,重新加载(reload)功能无法正常工作。当文件发生修改时,uvicorn重新加载非常缓慢或根本不重新加载,导致开发体验不佳。
讨论和探讨:
- 用户在GitHub上提出了此问题,指出在Windows 10上使用PyCharm时,uvicorn的重新加载速度非常慢。
- 有用户发现uvicorn源代码中的basereload.py文件的restart()函数可能存在问题。
- 一些用户发现该问题只在通过PyCharm运行程序时出现,直接在Python中运行或终端中使用uvicorn命令时没有此问题。
- 问题的作者在PyCharm问题跟踪器上报告了此问题,并提供了一个简单的程序来重现该问题。
- 用户们提供了不同的解决方法,如在运行配置中启用"Emulate terminal in output console"选项、使用调试模式运行项目或在Docker环境中运行项目。
解决方案:
- 降级到uvicorn v0.20.0版本,重新加载功能可以立即生效。
- 在PyCharm的运行配置中启用"Emulate terminal in output console"选项,可以解决重新加载速度慢的问题。然而,这会导致ANSI转义序列无法正常渲染。
- 使用调试模式运行项目或在基于Docker的运行环境中运行项目也可以绕过该问题。