Я написал тестовый сервис для того, чтобы убедиться, что сервис выполняет запросы параллельно:
class MyService(test_pb2_grpc.MyService):
async def Method(
self, request, context: grpc.ServicerContext
):
time.sleep(1)
return test_pb2.Response()
async def run_serve():
server = grpc.aio.server(
futures.ThreadPoolExecutor(max_workers=10)
)
test_pb2_grpc.add_MyServiceServicer_to_server(
MyService(), server
)
server.add_insecure_port("0.0.0.0:9000")
await server.start()
await server.wait_for_termination()
if __name__ == "__main__":
asyncio.run(run_serve())
Тестировал через locust с нагрузкой 50u/s ,50 секунд.
Результаты:
RPS=1, средняя скорость ответа = 25 секунд, запросов обработал 50.
Ожидал:
RPS=10, запросов обработано >~500.
Подскажите, пожалуйста, в чем проблема? Почему так?
UPD:
А понял, это для задач отличных от async-io, но как тогда правильно написать time.sleep(1), чтобы ощущался прирост скорости за счет async?