跳转到主要内容

让孤儿进程自杀

项目描述

让Python中的子进程在成为孤儿进程后自杀。

安装

pip install orphanage

别忘了将其放在setup.py / requirements.txt中。

使用方法

from orphanage import exit_when_orphaned

exit_when_orphaned()

动机

一些应用程序服务器软件(例如Gunicorn)采用多进程架构,我们称之为主从模型。如果主进程停止,它们必须清理工作进程,以防止它们成为孤儿进程。

在gevent集成场景中,Gunicorn的工作进程会在用户线程(即greenlet)中轮询其ppid以成为孤儿感知。但是,如果由于在管道上阻塞写入而导致主进程崩溃,用户线程可能会挂起。

我们希望在这个真正的内核线程中执行这个ppid轮询。这就是这个库的意图。

原理

该库定期(目前为1秒)在内部线程中轮询ppid。一旦ppid更改,原始父进程应该已经死亡,当前进程应该是孤儿进程。内部线程将向当前进程发送SIGTERM

在计划中,Linux平台上可能会引入prctl & SIGHUP模式,以避免创建线程。目前,唯一支持的战略是ppid轮询,以便于移植。

替代方案

CaoE是由豆瓣公司开发的这个库的替代品。它使用prctl和双fork模式。它有一个纯Python实现,没有C扩展编译要求。如果你不介意扭曲进程树,这也会是一个不错的选择。

贡献

如果你想要报告错误或请求功能,请随时在GitHub上创建问题。

当然,合并请求总是受欢迎的。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源分发

orphanage-0.1.0.tar.gz (6.5 kB 查看哈希值)

上传时间

构建发行版

orphanage-0.1.0-pp3510-pypy3_510-macosx_10_13_x86_64.whl (8.7 kB 查看哈希值)

上传时间 PyPy macOS 10.13+ x86-64

orphanage-0.1.0-pp2510-pypy_41-macosx_10_13_x86_64.whl (12.3 kB 查看哈希值)

上传时间 PyPy macOS 10.13+ x86-64

orphanage-0.1.0-cp36-cp36m-manylinux1_x86_64.whl (16.7 kB 查看哈希值)

上传时间 CPython 3.6m

orphanage-0.1.0-cp36-cp36m-macosx_10_13_x86_64.whl (10.1 kB 查看哈希值)

上传时间 CPython 3.6m macOS 10.13+ x86-64

orphanage-0.1.0-cp27-cp27mu-manylinux1_x86_64.whl (19.7 kB 查看哈希值)

上传于 CPython 2.7mu

orphanage-0.1.0-cp27-cp27m-macosx_10_13_x86_64.whl (10.1 kB 查看哈希值)

上传于 CPython 2.7m macOS 10.13+ x86-64

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面