让孤儿自杀

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扩展编译要求。如果你不介意的话 流程树,这也是一个不错的选择。

贡献

如果您想报告错误或请求功能,请随时打开 关于GitHub的问题。

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaMaven:如何验证所有bean都已创建和初始化   javaapplet的应用   java Sqoop无法将MySQL导入Hadoop,引发ClassNotFoundException   安卓我可以通过Java编程破坏文件吗?还有可能扰乱文件内容吗?   java JPQL多连接查询   java如何在jsp中访问ModelMap?   java JTable显示为空白   Java,计算字符串的逻辑错误   java如何在构造函数上设置方面   java将自动构建从2cpu披萨盒重新调整为多CPU怪物?   java为什么捆绑包中的ArrayList仍然存在?   类的java方法未定义   带有额外连接条件的java JPA@JoinTable   在Java中,如何在字符串数组中的单词/数字之间添加一行?