Ejemplo n.º 1
0
    async def handle_request(self, request: Query) -> asyncio.Future:
        request.tick_enter_replica = time.time()
        logger.debug("Replica {} received request {}".format(
            self.replica_tag, request.metadata.request_id))
        request.async_future = asyncio.get_event_loop().create_future()
        self.num_ongoing_requests += 1

        self.batch_queue.put(request)
        result = await request.async_future
        request_time_ms = (time.time() - request.tick_enter_replica) * 1000
        logger.debug("Replica {} finished request {} in {:.2f}ms".format(
            self.replica_tag, request.metadata.request_id, request_time_ms))

        self.num_ongoing_requests -= 1
        # Returns a small object for router to track request status.
        return b"", result
Ejemplo n.º 2
0
 async def handle_request(self, request: Query):
     assert not isinstance(request, list)
     logger.debug("Worker {} got request {}".format(self.name, request))
     request.async_future = asyncio.get_event_loop().create_future()
     self.query_queue.put_nowait(request)
     return await request.async_future