def run_subprocess(): transport, protocol = yield from loop.subprocess_shell( protocol_factory, cmd, stdin=stdin, stdout=stdout, stderr=stderr, **kwds) process = Process(transport, protocol, loop) protocol.configure_handler(process, callback) yield from process.wait() return process
async def _stop_process(self, process: Process): """Stop a process Args: process (Process): the process to stop """ if process.returncode is None: process.terminate() try: await asyncio.wait_for(process.wait(), 5) except asyncio.TimeoutError: process.kill()
def _consume_in_subprocess(self, job, kwargs): params = dict(self.json_params()) loop = job._loop protocol_factory = lambda: StreamProtocol(job) transport, protocol = yield from loop.subprocess_exec( protocol_factory, sys.executable, PROCESS_FILE, json.dumps(sys.path), json.dumps(params), job.task.serialise()) process = Process(transport, protocol, loop) yield from process.wait() if job.task.stacktrace: raise RemoteStackTrace return job.task.result