Mercurial > repos > shellac > guppy_basecaller
view env/lib/python3.7/site-packages/galaxy/util/lazy_process.py @ 4:79f47841a781 draft
"planemo upload commit 2a0fe2cc28b09e101d37293e53e82f61762262ec"
author | shellac |
---|---|
date | Thu, 14 May 2020 16:47:39 -0400 |
parents | 26e78fe6e8c4 |
children |
line wrap: on
line source
import subprocess import threading import time class LazyProcess(object): """ Abstraction describing a command line launching a service - probably as needed as functionality is accessed in Galaxy. """ def __init__(self, command_and_args): self.command_and_args = command_and_args self.thread_lock = threading.Lock() self.allow_process_request = True self.process = None def start_process(self): with self.thread_lock: if self.allow_process_request: self.allow_process_request = False t = threading.Thread(target=self.__start) t.daemon = True t.start() def __start(self): with self.thread_lock: self.process = subprocess.Popen(self.command_and_args, close_fds=True) def shutdown(self): with self.thread_lock: self.allow_process_request = False if self.running: self.process.terminate() time.sleep(.01) if self.running: self.process.kill() @property def running(self): return self.process and not self.process.poll() class NoOpLazyProcess(object): """ LazyProcess abstraction meant to describe potentially optional services, in those cases where one is not configured or valid, this class can be used in place of LazyProcess. """ def start_process(self): return def shutdown(self): return @property def running(self): return False