Как определить глобальный обработчик ошибок в gRPC python - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь перехватить любое исключение, которое возникает в любом сервисере, поэтому я могу убедиться, что я распространяю только известные исключения, а не неожиданные, такие как ValueError, TypeError и т. Д.

Я бы хотел иметь возможностьперехватывайте любые возникшие ошибки и форматируйте их или конвертируйте в другие ошибки, чтобы лучше контролировать информацию, которая предоставляется.

Я не хочу заключать в каждый метод servicer попытку / исключение.

Я пробовал с перехватчиком, но я не могу перехватить там ошибки.

Есть ли способ указать обработчик ошибок для сервера grpc?как то, что вы делаете с колбой или любым другим http-сервером?

1 Ответ

0 голосов
/ 28 ноября 2018

gRPC Python в настоящее время не поддерживает обработчик глобальных ошибок на стороне сервера.Перехватчик не будет выполнять обработчик сервера внутри функции intercept_service, поэтому нет возможности попробовать / исключить.

Кроме того, я обнаружил, что реализация перехватчика сервера Python gRPC отличается от той, что предложили в оригинале L13-Python-Interceptors.md # сервер-перехватчики .Если реализация придерживается оригинального дизайна, мы можем легко использовать перехватчик как глобальный обработчик ошибок с handler и request / request_iterator.

# Current Implementation
intercept_service(self, continuation, handler_call_details)

# Original Design
intercept_unary_unary_handler(self, handler, method, request, servicer_context)
intercept_unary_stream_handler(self, handler, method, request, servicer_context)
intercept_stream_unary_handler(self, handler, method, request_iterator, servicer_context)
intercept_stream_stream_handler(self, handler, method, request_iterator, servicer_context)

Пожалуйста, отправьте вопрос запроса функции на https://github.com/grpc/grpc/issues.

...