我目前有一个使用 uvicorn 部署的 fastapi,它使用threading. 该线程是无限的(它是每 x 秒更新一次的例程)。在我更新到 python 3.10 之前,一切都工作正常,每次我更改代码时,服务器都会检测到更改并重新加载,在 init 处杀死并创建一个新线程。
但是现在,当我修改代码时,服务器会检测到更改并尝试重新加载,但创建的线程不会被终止(打印仍然继续在控制台中流动),从而避免服务器完全重新加载。
my print from my thread
WARNING: StatReload detected changes in 'app\api.py'. Reloading...
INFO: Shutting down
INFO: Waiting for application shutdown.
INFO: Application shutdown complete.
INFO: Finished server process [3736]
my print from my thread
my print from my thread
...
Run Code Online (Sandbox Code Playgroud)
如果我在控制台中按 ctrl+C,则效果相同。线程保持活动状态 目前我的解决方案是kill PID每次我想刷新时都刷新,但这有点烦人。
我尝试回到 python 3.7.9 但问题仍然存在。我还尝试实施atexit并手动终止该进程,但没有成功。
有关如何正确处理此问题的任何线索?