有没有一种方法可以干净地杀死维康?

时间:2020-02-27 00:01:38

标签: python python-3.x fastapi 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。

1 个答案:

答案 0 :(得分:1)

那是因为您正在运行uvicorn作为唯一的服务器。 uvicorn 不是流程经理,因此,它无法管理员工的生命周期。这就是they recommend running uvicorn using gunicorn+UvicornWorker用于生产的原因。

也就是说,您可以使用以下脚本杀死生成的工作程序并触发其关闭:

$ kill $(pgrep -P $uvicorn_pid)

之所以起作用,而不是对父pid的kill起作用的原因是,当您^C进行某些操作时,信号会在附着到{{1} }。