mirror of
https://github.com/ansible/awx.git
synced 2026-03-21 19:07:39 -02:30
Use psutil to find the right job to TERM
* When using proot use psutil to find the ansible child process and issue the SIGTERM to instead of the proot process
This commit is contained in:
@@ -23,6 +23,7 @@ import uuid
|
|||||||
from distutils.version import LooseVersion as Version
|
from distutils.version import LooseVersion as Version
|
||||||
import dateutil.parser
|
import dateutil.parser
|
||||||
import yaml
|
import yaml
|
||||||
|
import psutil
|
||||||
|
|
||||||
# Pexpect
|
# Pexpect
|
||||||
import pexpect
|
import pexpect
|
||||||
@@ -432,7 +433,16 @@ class BaseTask(Task):
|
|||||||
instance = self.update_model(instance.pk)
|
instance = self.update_model(instance.pk)
|
||||||
if instance.cancel_flag:
|
if instance.cancel_flag:
|
||||||
try:
|
try:
|
||||||
os.kill(child.pid, signal.SIGINT)
|
if settings.AWX_PROOT_ENABLED:
|
||||||
|
main_proc = psutil.Process(pid=child.pid)
|
||||||
|
if hasattr(main_proc, "children"):
|
||||||
|
child_procs = main_proc.children(recursive=False)
|
||||||
|
else:
|
||||||
|
child_procs = main_proc.get_children(recursive=False)
|
||||||
|
for child_proc in child_procs:
|
||||||
|
os.kill(child_proc.pid, signal.SIGTERM)
|
||||||
|
else:
|
||||||
|
os.kill(child.pid, signal.SIGTERM)
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
canceled = True
|
canceled = True
|
||||||
except OSError:
|
except OSError:
|
||||||
|
|||||||
Reference in New Issue
Block a user