Я использую тензор потока-обслуживания для сервера модели глубокого обучения, это GRP c serivce. А для отслеживания запросов и ответов сервера в середине сервера и клиента находится прокси-сервер. Прокси-сервер будет записывать все запросы и ответы уровня http.
Кортежу (запрос, ответ) необходимо каким-то образом быть удобочитаемым для человека. Поэтому мне нужно перевести запрос и ответ grp c в формат json. Поскольку у меня есть файлы *.proto
, это выглядит не так сложно. Но после некоторых тестов я обнаружил, что тело запроса и ответа grp c показывает 5 (разных) дополнительных байтов данных перед всем телом.
// bytes in the grpc response:
\x00\x00\x00\x00c\nA\n\x07Softmax\x126\x08\x01\x12\x08\x12\x02\x08\x01\x12\x02\x08\n*(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x1e\n\x07default\x12\x02\x08\x01\x1a\x0fserving_default
// bytes in the raw .pb format:
\nA\n\x07Softmax\x126\x08\x01\x12\x08\x12\x02\x08\x01\x12\x02\x08\n*(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x1e\n\x07default\x12\x02\x08\x01\x1a\x0fserving_default
Вы видите, что есть дополнительные пять байтов \x00\x00\x00\x00c
там. Итак ... что это значит? Все ли запросы и ответы grp c имеют эту дополнительную информацию? Или есть какой-то лучший способ разобрать содержимое grp c и перевести его в какую-то удобочитаемую структуру?