def add_done_callback(self, fn, *, context=None): def BeforeFn(*args, **kargs): try: with GearsSession(self.gearsSession): fn(*args, **kargs) except Exception as e: log(e) Future.add_done_callback(self, BeforeFn, context=context)
def receive(self, var): if var.pc in self.protocol.buffer: payload = self.protocol.buffer[var.pc] data = pickle.loads(payload) if data is not None: var.set_result(data) else: logging.debug('not a variable') else: fut = Future(loop=var.runtime.loop) self.protocol.buffer[var.pc] = fut def when_finished(_fut): d = _fut.result() d = pickle.loads(d) if d is not None and not var.done(): var.set_result(d) fut.add_done_callback(when_finished)