有人可以解释 gunicorn 如何处理 SIGTERM 或 SIGINT 信号

时间:2021-07-21 11:01:55

标签: python multiprocessing signals gunicorn

我通过 gunicorn 使用单个工人运行应用程序。 所以,我有主进程(比如说,id=12)。我也可以使用多处理(id = 20,无论如何)从主创建另一个进程。 我还想提供中断子进程的可能性(id=20)。为此,从主进程调用 os.kill(20, signal.SIGTERM)。此外,还提供了 SIGTERM 信号的自定义处理程序。

问题是,如果应用程序捕捉到信号,进程 (id=20) 会按我的预期停止,但主进程也会在此之后停止。然后工作人员重新启动。

文档 (https://docs.gunicorn.org/en/latest/signals.html#master-process) 很差,或者我遗漏了什么。

我玩了一段时间后意识到我可以通过 SIGUSR1SIGUSR2 停止子进程而无需重新启动工作程序(当然,如果我的自定义方法提供了此信号)。

但我不确定,这是停止进程的正确方法。或者也许我可以用 SIGTERM 做同样的事情。

谢谢。

0 个答案:

没有答案