让孤儿自杀
orphanage的Python项目详细描述
让python中的子进程自杀,如果它们成为孤儿。
安装
pip install orphanage
别忘了把它放在setup.py/requirements.txt中。
用法
fromorphanageimportexit_when_orphanedexit_when_orphaned()
动机
一些应用服务器软件(例如Gunicorn)在多进程上工作 我们称之为主工作模型的架构师。他们必须把工人清理干净 进程如果主进程被停止,以防止它们成为 孤立进程。
在gevent集成场景中,gunicorn的工作进程 ppid在用户线程(也称为greenlet)中进行孤立感知。但是用户 一旦主进程由于阻塞而崩溃,线程可能会被挂起 写在管道上,主进程和 工作进程。
我们想在真正的内核线程中执行这个ppid轮询。那就是 此库的意图。
原理
此库生成一个内部线程,定期轮询ppid。 间隔(现在是一秒钟)。一旦ppid更改,原始的 父进程应该是死的,当前进程应该是孤立的。这个 内部线程将向当前进程发送SIGTERM。
在计划中,可以在linux中引入prctl&;SIGHUP模式 避免创建线程的平台。目前,唯一支持的策略 是可移植的ppid轮询。
备选方案
CaoE是豆瓣公司开发的这个库的替代品。 使用prctl和两次分叉模式。它有一个纯python实现 没有任何C扩展编译要求。如果你不介意的话 流程树,这也是一个不错的选择。