def _wrapped(job, *args, **kwargs): job_id = id(job) to_parent = job.data["pipe"] host = job.data["host"] # Create a protocol adapter. mkaccount = partial(_account_factory, to_parent, host) pargs = {"account_factory": mkaccount, "stdout": job.data["stdout"]} pargs.update(host.get_options()) conn = prepare(host, **pargs) # Connect and run the function. log_options = get_label(func, "log_to") if log_options is not None: # Enable logging. proxy = LoggerProxy(to_parent, log_options["logger_id"]) log_cb = partial(proxy.log, job_id) proxy.add_log(job_id, job.name, job.failures + 1) conn.data_received_event.listen(log_cb) try: conn.connect(host.get_address(), host.get_tcp_port()) result = func(job, host, conn, *args, **kwargs) conn.close(force=True) except: proxy.log_aborted(job_id, serializeable_sys_exc_info()) raise else: proxy.log_succeeded(job_id) finally: conn.data_received_event.disconnect(log_cb) else: conn.connect(host.get_address(), host.get_tcp_port()) result = func(job, host, conn, *args, **kwargs) conn.close(force=True) return result
def _wrapped(job, *args, **kwargs): job_id = id(job) to_parent = job.data['pipe'] host = job.data['host'] # Create a protocol adapter. mkaccount = partial(_account_factory, to_parent, host) pargs = {'account_factory': mkaccount, 'stdout': job.data['stdout']} pargs.update(host.get_options()) conn = prepare(host, **pargs) # Connect and run the function. log_options = get_label(func, 'log_to') if log_options is not None: # Enable logging. proxy = LoggerProxy(to_parent, log_options['logger_id']) log_cb = partial(proxy.log, job_id) proxy.add_log(job_id, job.name, job.failures + 1) conn.data_received_event.listen(log_cb) try: conn.connect(host.get_address(), host.get_tcp_port()) result = func(job, host, conn, *args, **kwargs) conn.close(force=True) except: proxy.log_aborted(job_id, serializeable_sys_exc_info()) raise else: proxy.log_succeeded(job_id) finally: conn.data_received_event.disconnect(log_cb) else: conn.connect(host.get_address(), host.get_tcp_port()) result = func(job, host, conn, *args, **kwargs) conn.close(force=True) return result