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
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