mirror of https://gitee.com/anolis/sysom.git
fix(framework): SysomFramework should kill all child while receive killed signal
This commit is contained in:
parent
29ddb40c01
commit
ff7af9c80e
|
@ -38,4 +38,5 @@ uvicorn[standard]==0.16.0
|
||||||
# xlrd==2.0.1
|
# xlrd==2.0.1
|
||||||
# prometheus-client==0.16.0
|
# prometheus-client==0.16.0
|
||||||
pyyaml==6.0
|
pyyaml==6.0
|
||||||
pyyaml-include==1.3
|
pyyaml-include==1.3
|
||||||
|
psutil==5.9.7
|
||||||
|
|
|
@ -24,7 +24,8 @@ setuptools.setup(
|
||||||
"aiofiles==0.8.0",
|
"aiofiles==0.8.0",
|
||||||
"anyio>=3.6.2",
|
"anyio>=3.6.2",
|
||||||
"asyncer==0.0.2",
|
"asyncer==0.0.2",
|
||||||
"fastapi==0.83.0"
|
"fastapi==0.83.0",
|
||||||
|
"psutil==5.9.7"
|
||||||
],
|
],
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
|
|
|
@ -43,8 +43,30 @@ class SysomFramework:
|
||||||
cls._config = config
|
cls._config = config
|
||||||
cls._framework_plug_mag = FrameworkPlugMag(config)
|
cls._framework_plug_mag = FrameworkPlugMag(config)
|
||||||
cls.init_logger(config)
|
cls.init_logger(config)
|
||||||
|
cls.catch_kill_sig_then_kill_all_child()
|
||||||
return cls
|
return cls
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def catch_kill_sig_then_kill_all_child(cls):
|
||||||
|
"""Catch kill signal and kill all child process
|
||||||
|
"""
|
||||||
|
def signal_handler(signum, frame):
|
||||||
|
parent = psutil.Process(pid)
|
||||||
|
for child in parent.children(recursive=True): # 获取所有子进程
|
||||||
|
child.kill() # 结束子进程
|
||||||
|
exit(1)
|
||||||
|
import signal
|
||||||
|
import os
|
||||||
|
import psutil
|
||||||
|
|
||||||
|
pid = os.getpid()
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
|
signal.signal(signal.SIGTERM, signal_handler)
|
||||||
|
signal.signal(signal.SIGHUP, signal_handler)
|
||||||
|
signal.signal(signal.SIGQUIT, signal_handler)
|
||||||
|
signal.signal(signal.SIGABRT, signal_handler)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def init_logger(cls, config: ConfigParser):
|
def init_logger(cls, config: ConfigParser):
|
||||||
"""Init clogger
|
"""Init clogger
|
||||||
|
|
Loading…
Reference in New Issue