让孤儿进程自杀
项目描述
让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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f5ae69e99fcdd7996e5ed6744477b5168c01b690009b84acd88e3be178578a6a |
|
MD5 | 7cc52d80eea23a93fb67fcd864c16e57 |
|
BLAKE2b-256 | 33eba4b6c6120a0f61866e9aac47c98db02f8cf2e0ec19b0f21e91e669a4f991 |
关闭
orphanage-0.1.0-pp3510-pypy3_510-macosx_10_13_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 26a6b1515a6c22a1cbb73c48f009914f6d12f12380bb622deb02321eb44784cf |
|
MD5 | f8604f40c5b713b5d2a4964f0d38450b |
|
BLAKE2b-256 | 3b947ec0548ffdf1b5048b85b5f208cde6054387bd5093f56ea63708a51dcd04 |
关闭
orphanage-0.1.0-pp2510-pypy_41-macosx_10_13_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ce39ab1f79d73aec3825817bd50d1d353cd81cecf9986c7a4060a3912905c04e |
|
MD5 | 9bb7e75686e202cc8291de5d9d9c232a |
|
BLAKE2b-256 | bacac73bd3f8fb986967af3dbca6f868d0da6857d4d43bb3f812509944d34c6d |
关闭
orphanage-0.1.0-pp360-pypy3_60-manylinux1_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f6f45325a06c71972730f0ddacfc9cb3b9b59a1910ab7d917ad7a0d26f561e02 |
|
MD5 | defc8e74720d27a19312a0a58b370717 |
|
BLAKE2b-256 | 214d881878574dcfb03d21e20f660cf790124e2333d6e6fb26de05a908bbd87c |
关闭
orphanage-0.1.0-pp260-pypy_41-manylinux1_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0160915acc25c8bbbdb8c3a39400b9ec2325ec16608817c26e145eba1d81023b |
|
MD5 | 029bfdd291c78c29052dcebce8b871c0 |
|
BLAKE2b-256 | 1070b1c4cc8459fd9f19522bacfaf7d194c2315b2db598d025eb8e885f3e9a33 |
关闭
orphanage-0.1.0-cp36-cp36m-manylinux1_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d482ef8ff69fe72bf51fab9d0adbb42a08ed44cb2d68282f3e68cc6400ee47a |
|
MD5 | 3404c833515951424af393073e64caab |
|
BLAKE2b-256 | e6206e0310ef8ec6b3d0e1d593da3183f764651d9415848c0155c2880d142d33 |
关闭
orphanage-0.1.0-cp36-cp36m-macosx_10_13_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | addef2e38475b23bb0b1698d831363a6b68eac3910d993d26cd4e44df6b15e6d |
|
MD5 | f6fff952c780955840463b2ef8aecae1 |
|
BLAKE2b-256 | 5a4aca31ad8b3a85d31dc953a095935c4d39be66acc631a2af394dd319a8551b |
关闭
orphanage-0.1.0-cp27-cp27mu-manylinux1_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 42fd846417ecd91d975b28d02d15d2e44ccd54605eb2511ff8219aa2a23b2f0f |
|
MD5 | 7615280a94ca87d7914729c9c4d132ab |
|
BLAKE2b-256 | c20a3b7c291ccfc3ebf141dd1118313daae86fdfe77437b40e1c689adce0db36 |
关闭
orphanage-0.1.0-cp27-cp27m-macosx_10_13_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 072545a0f3537d9edd751b6742549013695dfccd83e3f8e41663f08b9383844f |
|
MD5 | a18550dd6b4c0637955f573cc997b47d |
|
BLAKE2b-256 | c59eac7a832ab42c9303f1ab357109048543f6dcb4b11ef3f2ff954fd35a8264 |