supervisord 是否管理子进程?

Does supervisord managed subprocess?

我正在使用 supervisord 来管理流程。

(避免僵尸进程,以及其他难以管理的进程)

假设我将 运行 python 使用多处理的脚本。

from multiprocessing import Process
import time

def fetch():
    while True:
        time.sleep(1)
        print("I'm still alive...")


def main():
    processes = [
        Process(target=fetch),
        Process(target=fetch),
        Process(target=fetch),
        Process(target=fetch),
        Process(target=fetch),
        Process(target=fetch),
        Process(target=fetch),
        Process(target=fetch),
        [And more process here...]
    ]
    for process in processes:
        process.start()

main()

上面的代码,fetch() 创建了许多已处理的和 运行 它。

在这种情况下,如果 fetch() 创建的进程成为僵尸进程,

supervisord 管理它?(例如自动终止并重启)

或者,只管理根进程?

谢谢。

Supervisord 管理子进程,它负责管理它产生的任何东西。但是,如果要确保所有子进程都与主进程一起停止,请在 supervisord.conf 文件中使用 stopasgroup=true

参见相关问题:supervisord stopping child processes