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
|
@ -39,3 +39,4 @@ uvicorn[standard]==0.16.0
|
|||
# prometheus-client==0.16.0
|
||||
pyyaml==6.0
|
||||
pyyaml-include==1.3
|
||||
psutil==5.9.7
|
||||
|
|
|
@ -24,7 +24,8 @@ setuptools.setup(
|
|||
"aiofiles==0.8.0",
|
||||
"anyio>=3.6.2",
|
||||
"asyncer==0.0.2",
|
||||
"fastapi==0.83.0"
|
||||
"fastapi==0.83.0",
|
||||
"psutil==5.9.7"
|
||||
],
|
||||
classifiers=[
|
||||
"Programming Language :: Python :: 3",
|
||||
|
|
|
@ -43,8 +43,30 @@ class SysomFramework:
|
|||
cls._config = config
|
||||
cls._framework_plug_mag = FrameworkPlugMag(config)
|
||||
cls.init_logger(config)
|
||||
cls.catch_kill_sig_then_kill_all_child()
|
||||
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
|
||||
def init_logger(cls, config: ConfigParser):
|
||||
"""Init clogger
|
||||
|
|
Loading…
Reference in New Issue