def do_launch(self, env, gui, redirect_output, rfile, job_name=None): w = Worker(env, gui=gui, job_name=job_name) try: w(redirect_output=redirect_output) conn = eintr_retry_call(self.listener.accept) if conn is None: raise Exception('Failed to launch worker process') except BaseException: try: w.kill() except: pass import traceback return traceback.format_exc() return ConnectedWorker(w, conn, rfile)
def do_launch(self, gui, redirect_output, rfile, job_name=None): a, b = Pipe() with a: env = { 'CALIBRE_WORKER_FD': str(a.fileno()), 'CALIBRE_WORKER_RESULT': environ_item(as_hex_unicode(rfile)) } w = Worker(env, gui=gui, job_name=job_name) try: w(pass_fds=(a.fileno(), ), redirect_output=redirect_output) except BaseException: try: w.kill() except: pass b.close() import traceback return traceback.format_exc() return ConnectedWorker(w, b, rfile)