예제 #1
0
    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)
예제 #2
0
    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)