process_mgr.md 972 B

我想实现批量进程管理,例如在 Fastapi 中,请求后,进程启动在后台,不要阻塞 Fastapi 异步框架。 多个请求会启动多个进程,因此我需要一个进程管理器来管理子进程。

同时,为了避免内存泄露和僵尸进程,我必须要确保子进程在父进程退出后也能够被正确地终止,例如 Fastapi 生命周期管理中,跟随 Fastapi 主进程一起关闭。

即便主进程意外退出或者被强制杀死,或者主进程的终端被直接关闭,子进程也应该能够被正确地终止。

假设需要管理启动的进程是一个阻塞的 exe 文件,并且它在控制台有输出,为了防止输出过多导致进程卡死,我需要将输出重定向到日志文件中。日志文件可以是按每个进程创建,保存到目录 LOG_DIR / "process_mgr" 中

如果上述文件有错误,请重构上述文件,改用任何别的实用的库,或采取其他最佳方案。