让孤儿自杀

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


热门话题
JavaSpringMVC控制器测试打印结果JSON字符串   若catch语句返回,那个么为什么它最终会阻塞呢?   java Grails中servletContext在哪里可用?   java Jhipster:如何为现有项目启用多种语言   java异常评估SpringEL表达式:“#fields.hasErrors('something')”   java如何验证SeleniumWebDriver中的文本颜色?   java在绘图时使用JPanel坐标   java如何初始化spring启动到project?   java如何通过JDBC的PreparedStatement将UUID数组插入HyperSQL数据库   java修改JVM以跨线程序列化文件访问   Javascript到Java正则表达式   使用Java运行时调用aspell程序时出现字符集问题。getRuntime()。执行官   执行RDP时的java Sukuli按钮识别   java如何使用okhttp更改connect请求的标头   java无法创建Maven Eclipse项目