grpc python измеряет время отклика

Как я могу измерить полную занятость grpc-python для обработки запроса? Пока лучшее, что я могу сделать, это:

def Run(self, request, context):
   start = time.time()
   # service code...
   end = time.time()
   return myservice_stub.Response()

Но это не измеряет, сколько времени требуется grpc, чтобы сериализовать запрос, ответ, передать его по сети ... и так далее. Я ищу способ выполнить эти шаги.


person user3599803    schedule 09.09.2020    source источник
comment
Вы пробовали документацию grpc.io/docs/languages/python/ основы / # request-streaming-rpc   -  person Ares Zephyr    schedule 09.09.2020
comment
Да не нашел. И эта ссылка не отвечает на мой вопрос, она измеряет только код Python внутри обработчика запросов.   -  person user3599803    schedule 09.09.2020
comment
Вы можете попробовать добавить time.time() до и после вызова метода Run(self, request, context.   -  person Ajay A    schedule 15.09.2020
comment
Чего вы здесь пытаетесь достичь? Это для сравнительного анализа?   -  person gergelykalman    schedule 18.09.2020
comment
да. Я пытаюсь понять, каковы накладные расходы на сериализацию grpc и другие вещи, которые выполняются до моего фактического кода   -  person user3599803    schedule 21.09.2020


Ответы (1)


На стороне клиента можно измерить:

start = time.time()
response = stub.Run(request)
total_end_to_end = time.time() - start

Тогда вы можете получить общие накладные расходы (сериализация, передача) за счет сокращения вычислений метода Run.

Чтобы автоматизировать процесс, вы можете добавить (по крайней мере, ради теста) время вычисления в виде поля в myservice_stub.Response.

person Mark Loyman    schedule 05.10.2020
comment
Я уже сделал это, хотя это будет включать в себя сеть + накладные расходы на сервере. Я надеюсь измерить накладные расходы только на сервере - person user3599803; 06.10.2020