Skip to content

Commit 9ec9cf7

Browse files
fix: kill all processes after timeout.
1 parent 0222d9e commit 9ec9cf7

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

apps/common/utils/tool_code.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import socket
88
import subprocess
99
import sys
10+
import signal
1011
import uuid_utils.compat as uuid
1112
from common.utils.logger import maxkb_logger
1213
from django.utils.translation import gettext_lazy as _
@@ -234,8 +235,10 @@ def _exec_sandbox(self, _code):
234235
text=True,
235236
capture_output=True,
236237
timeout=self.process_timeout_seconds,
238+
preexec_fn=os.setsid,
237239
**kwargs)
238-
except subprocess.TimeoutExpired:
240+
except subprocess.TimeoutExpired as e:
241+
os.killpg(e.pid, signal.SIGKILL)
239242
raise Exception(_("Sandbox process execution timeout, consider increasing MAXKB_SANDBOX_PYTHON_PROCESS_TIMEOUT_SECONDS."))
240243
return subprocess_result
241244

0 commit comments

Comments
 (0)