gpt4 book ai didi

python - 有没有办法干净地杀死 uvicorn?

转载 作者:行者123 更新时间:2023-12-04 11:16:26 29 4
gpt4 key购买 nike

有没有办法干净地杀死 uvicorn?

即,如果它在终端的前台运行,我可以在它上面键入 ^C。这会导致 uvivorn 进程终止,并且所有工作进程都将被清理。 (即,它们消失了。)

另一方面,如果 uvicorn 在没有终端的情况下在后台运行,那么我无法想出一种干净地杀死它的方法。它似乎忽略了 SIGTERM、SIGINT 和 SIGHUP。我可以用 SIGKILL(即 -9)杀死它,但是工作进程仍然活着,我必须跟踪所有工作进程并杀死它们。这并不理想。

我在 Red Hat Enterprise Linux Server 7.3 (Maipo) 上使用带有 CPython 3.7.4、uvivorn 版本 0.11.2 和 FastAPI 0.46.0 的 uvicorn。

最佳答案

那是因为您正在运行 uvicorn作为您唯一的服务器。 uvicorn 不是进程管理器 并且,因此,它不管理它的 worker 生命周期。这就是为什么they recommend running uvicorn using gunicorn+UvicornWorker用于生产。
也就是说,您可以使用以下脚本杀死产生的 worker 并触发其关闭:

$ kill $(pgrep -P $uvicorn_pid)
这有效但无效的原因 kill在父 pid 上是因为当您 ^C某些东西,信号会在所有附加到 stdin 的衍生进程中传输。 .

关于python - 有没有办法干净地杀死 uvicorn?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60424390/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com