diff options
| -rw-r--r-- | snekbox.py | 16 | 
1 files changed, 16 insertions, 0 deletions
@@ -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)  |