Example #1
0
    def handle(self, mtype, data):
        if mtype == IPCMessageType.CALL_FUNC:
            nonce, func, args, kwargs = data
            res = self.resolve(func)(*args, **kwargs)
            self.send(IPCMessageType.RESPONSE, (nonce, res))
        elif mtype == IPCMessageType.GET_ATTR:
            nonce, path = data
            self.send(IPCMessageType.RESPONSE, (nonce, self.resolve(path)))
        elif mtype == IPCMessageType.EXECUTE:
            nonce, raw = data
            func = load_function(raw)
            try:
                result = func(self.obj)
            except Exception:
                self.log.exception('Failed to EXECUTE: ')
                result = None

            self.send(IPCMessageType.RESPONSE, (nonce, result))
        elif mtype == IPCMessageType.RESPONSE:
            nonce, res = data
            if nonce in self.results:
                self.results[nonce].set(res)
Example #2
0
 def run_on(self, sid, raw):
     func = load_function(raw)
     return self.shards[sid].execute(func).wait(timeout=15)