def get_status(self): if hasattr(self, '_status') and self._status is not None: return self._status if(self._terminated): return self._status # if pid still exists then return 'Running' # else if check process exit code in exec dir if _psutil.pid_exists(self._pid): proc = _psutil.Process(pid=self._pid) if _isfunction(proc.status) or _ismethod(proc.status): status = str(proc.status()).capitalize() else: status = str(proc.status).capitalize() if status in ['Zombie']: return self._get_status() elif status in ['Sleeping', 'Disk-sleep']: return 'Running' else: return status else: return self._get_status()
def cancel(self): if _psutil.pid_exists(self._pid): _psutil.Process(pid=self._pid).kill() self._terminated = True self._status = 'Canceled' self.__finalize_save()