Source code for rpyc_docker.worker

import threading,time,os,traceback,logging
from subprocess import check_output,CalledProcessError
logger = logging.getLogger("rpyc_docker")
logger.setLevel(logging.INFO)

[docs]class Worker(threading.Thread): _numWorkers = 0 _numWorkersLock = threading.Lock() def __init__(self): threading.Thread.__init__(self) self.status = "init" self.result = None self.traceback = None self.workerNum = self.inc_workers() self._startTime = time.time()
[docs] def cmd(self,cmd): try: output = check_output(cmd,shell = True) return (0,cmd,output) except CalledProcessError as e: return (e.returncode,e.cmd,e.output)
@property def upTime(self): return time.time() - self._startTime
[docs] def setup(self): pass
[docs] def teardown(self): pass
[docs] def run(self): try: self.status = "running" self.result = self.work() self.status = "done" except Exception as e: self.traceback = traceback.format_exc() self.status = "error"
[docs] def work(self): pass
@classmethod
[docs] def inc_workers(cls): Worker._numWorkersLock.acquire() Worker._numWorkers += 1 Worker._numWorkersLock.release() return Worker._numWorkers