小编Jul*_*vel的帖子

Uvicorn reload :自动重新加载时杀死所有创建的子进程

我目前有一个使用 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并手动终止该进程,但没有成功。

有关如何正确处理此问题的任何线索?

python multithreading fastapi uvicorn

5
推荐指数
1
解决办法
1035
查看次数

标签 统计

fastapi ×1

multithreading ×1

python ×1

uvicorn ×1