From e63fd39cb7e0de4fdbfc20ec9e34c6dfedad8fb5 Mon Sep 17 00:00:00 2001 From: Christopher Baklid Date: Sun, 27 May 2018 12:02:02 +0200 Subject: kill long running processes after x seconds --- snekbox.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'snekbox.py') diff --git a/snekbox.py b/snekbox.py index 42bec91..4b9d726 100644 --- a/snekbox.py +++ b/snekbox.py @@ -2,6 +2,8 @@ import sys import io import json import multiprocessing +import threading +import time from logs import log from rmq import Rmq @@ -54,12 +56,26 @@ def execute(body): exchange=snekid) exit(0) +def stopwatch(process): + log.debug(f"10 second timer started for process {process.pid}") + for _ in range(10): + time.sleep(1) + if not process.is_alive(): + log.debug(f"Clean exit on process {process.pid}") + exit(0) + + process.terminate() + log.debug(f"Rerminated process {process.pid} forcefully") def message_handler(ch, method, properties, body, thread_ws=None): p = multiprocessing.Process(target=execute, args=(body,)) p.daemon = True p.start() + t = threading.Thread(target=stopwatch, args=(p,)) + t.daemon = True + t.start() + ch.basic_ack(delivery_tag=method.delivery_tag) -- cgit v1.2.3