예제 #1
0
async def connect(path, *, loop=None):
    dht = await getDHT()
    if isinstance(path, Connection):
        path = path.path
    addr = await dht.get(path)
    if addr is None:
        raise QuLabRPCError(f'Unknow RPC path {path}.')
    return Connection(path, loop=loop)
예제 #2
0
 async def _connect(self):
     try:
         addr = _getAddressOnRedis(self.path)
     except RedisNotSetError:
         dht = await getDHT()
         addr = await dht.get(self.path)
     if addr is None:
         raise QuLabRPCError(f"Unknow RPC path {self.path}.")
     return ZMQClient(addr, loop=self.loop)
예제 #3
0
async def connect(path, *, loop=None):
    dht = await getDHT()
    if isinstance(path, Connection):
        path = path.path
    try:
        addr = _getAddressOnRedis(path)
    except RedisNotSetError:
        addr = await dht.get(path)
    if addr is None:
        raise QuLabRPCError(f'Unknow RPC path {path}.')
    return Connection(path, loop=loop)
예제 #4
0
    async def connect(self):
        if self.path not in Connection._zmq_client_table:
            Connection._zmq_client_table[self.path] = await self._connect()

        retry = 0
        while retry < 3:
            if not await Connection._zmq_client_table[self.path].ping():
                Connection._zmq_client_table[self.path] = await self._connect()
            else:
                break
            retry += 1
        else:
            raise QuLabRPCError(f'Can not connect to {self.path}')

        self.zmq_client = Connection._zmq_client_table[self.path]
예제 #5
0
 async def _connect(self):
     dht = await getDHT()
     addr = await dht.get(self.path)
     if addr is None:
         raise QuLabRPCError(f"Unknow RPC path {self.path}.")
     return ZMQClient(addr, loop=self.loop)
예제 #6
0
 def _unpack_request(self, msg):
     try:
         method, args, kw = unpack(msg)
     except:
         raise QuLabRPCError("Could not read packet: %r" % msg)
     return method, args, kw