让孤儿自杀

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第三方库


热门话题
试图读取字段“java”。lang.反对安卓。util。一对首先   gradle对java的影响。属性作为任务的输入?   java我的return语句不起作用。我做错了什么?   java通用同步代码块[无对象锁定]   macos Java小程序游戏不能在Mac上运行,即使它可以在PC上运行   java Firebase GeoFire设置位置未在服务中工作   java排序字符串对象   java通过JLabel上传背景图像(jpg)后,如何将图像缩放到它所在的面板上?   java无法连接到jsp中的数据库   java如何在整个ant taskdef操作的执行过程中拥有一个singleton类实例   java如何在按键事件中检查JTtextField中的字符串数字验证器   如何最好地输出大型单行XML文件(使用Java/Eclipse)?   内存不足,Java运行时环境无法在Java应用程序中继续运行   java Hibernate连接错误:组织上的NullPointerException。冬眠hql。阿斯特。HqlSqlWalker。createFromJoinElement   linux将参数从shell脚本传递到java类   java对于接受多个参数的setter是否有类似于@JsonCreator的注释?   java在链表中添加节点