如何在 gRPC python 中定义全局错误处理程序

2024-03-15

我试图捕获任何服务程序中引发的任何异常,这样我就可以确保只传播已知的异常,而不传播意外的异常,例如 ValueError、TypeError 等。

我希望能够捕获任何引发的错误,并格式化它们或将它们转换为其他错误,以更好地控制公开的信息。

我不想将每个服务程序方法都用 try/ except 括起来。

我尝试过使用拦截器,但我无法捕获那里的错误。

有没有办法为 grpc 服务器指定错误处理程序?就像你对 Flask 或任何其他 http 服务器所做的那样?


gRPC Python 目前不支持服务器端全局错误处理程序。拦截器不会执行内部的服务器处理程序intercept_service函数,所以没有办法尝试/例外。

另外,我发现 gRPC Python 服务器拦截器实现与他们最初提出的不同L13-Python-Interceptors.md#server-interceptors https://github.com/grpc/proposal/blob/361846400834164d21c12ca6cf60e8cbf501d6cd/L13-Python-Interceptors.md#server-interceptors。如果实现坚持最初的设计,我们可以轻松地使用拦截器作为全局错误处理程序handler and 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 https://github.com/grpc/grpc/issues.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 gRPC python 中定义全局错误处理程序 的相关文章

随机推荐

  • 带 @JsonIgnore 的属性和不带注释的属性有什么区别?

    考虑下面的类 private static class Widget JsonProperty private String id ID JsonIgnore private String jsonIgnored JSON IGNORED
  • 使用 MinGW 在 Windows 上编译小型 Gcc 项目

    所以我用 C 编程已经快两年了 一直以来我很高兴使用具有可爱的项目设置和自动链接等功能的 IDE VS 我总是远离任何需要我通过 makefile 进行编译的外部库 或者至少是那些适用于 Linux 环境 其他编译器的库 无论如何 我现在想
  • document.getElementById 方法在哪里定义?

    注 本文仅用于学习目的 console log this document getElementById function alert testing document getElementById someID 我写了上面一段javasc
  • 设计注册确认

    我的项目中有一个用户和一个管理员角色 我使用 Devise 创建了身份验证 在我的管理员角色中 我没有任何确认 在我的用户模型中 我有以下内容 devise database authenticatable confirmable reco
  • Julia 转置 DataFrame 中的分组数据?

    ds Dataset group repeat 1 3 inner 2 b repeat 1 2 inner 3 c repeat 1 1 inner 6 d repeat 1 6 inner 1 e string a f 在inmemor
  • java.io.IOException:没有这样的文件或目录(保存图像)

    我将从设备中选择的照片上传到 ftp 但是 尽管我从设备中选择了照片 但我收到 没有这样的文件目录 错误 虽然我授予应用程序权限 但它不会将其保存到我在应用程序中选择的 IMAGE DIRECTORY 中 所以我收到这个错误 尽管我授予了权
  • CSS 悬停有时不适用于 svg 路径

    我有一个带有路径的 svg 并且我将 css 悬停在它们上面 但悬停有时有效 有时无效 可能是什么问题 div div
  • .Net中的优先级队列[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找优先级队列或堆数据结构的 NET 实现 优先级队列是比简单排序提供更多灵活性的数据结构 因为
  • 原始指针参数的shared_ptr

    当函数需要char 时 可以传入shared ptr吗 我正在读取整个文本文件 长度 100 并且想要将字符存储到 char 数组中 我使用的天真的方法是这样的 ifstream dictFile fileName size t fileL
  • 如何使用子字符串删除字符串(文件名)的结尾?

    我知道我必须使用 Substring 来删除 但我不知道该怎么做 我需要像这样删除字符串末尾 from C Users myname Pictures shoeImage jpg to C Users myname Pictures 使用以
  • 在Python源代码中使用UTF-8编码[重复]

    这个问题在这里已经有答案了 考虑 cat bla py u unicode d s u encode utf 8 print s python bla py File bla py line 1 SyntaxError Non ASCII
  • WM_GETICON 有时不返回图标句柄

    我试图显示所有窗口标题 包括相应的图标 就像 Windows 任务管理器那样 但这仅在一定程度上有效 尽管我能够获取窗口的标题栏文本 但该图标并不总是可用 为了获得图标 我通过了WM GETICON发消息给SendMessage sourc
  • PIL 图像从 RGB 转换为 YCbCr 结果为 4 个通道而不是 3 个通道,并且行为类似于 RGB

    嗯 标题很不言自明 我有一个图像文件 我想将其分别分成 Y Cb 和 Cr 打开文件后 将其从 RGB 这是打开图像文件时的默认模式 转换为 YCbCr 然后使用 numpy array 将其转换为数组 结果是一个具有 4 个通道的 2D
  • 重定向到 root_url 并返回,除非 @user.activated

    这是我的users controller方法 如果用户未激活 则应重定向 def show user User find params id redirect to root url and return unless user activ
  • android 使用 MapView 滑动水平视图分页

    我有一个 Android 应用程序 其视图包含 3 个页面 用户可以通过滑动手指 向左或向右 水平视图分页 在这些页面之间进行导航 我下载了 android support v4 view ViewPager 并找到了实现滑动部分的方法 这
  • 从两个不同的 C DLL 调用两个同名函数

    我需要在同一个可执行文件中访问两个 C DLL 我有两个库的头文件和 LIB 文件 不幸的是 我需要访问的函数子集具有完全相同的名称 到目前为止 我能想到的最佳解决方案是使用 LoadLibrary 加载其中一个 DLL 并使用 GetPr
  • 如何在 WordPress 中动态创建 pdf? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我使用 Contact Form 7 让用户输入数据 然后根据他们的数据输入 我需要在输出整个 pdf 之前向 pdf 添加不同的文本
  • 无延迟调用setTimeout

    在 JavaScript 库中经常看到这样的代码 setTimeout function 0 我想知道为什么要使用这样的包装代码 非常简化 浏览器是单线程的 并且这个单线程 UI 线程 在渲染引擎和 js 引擎之间共享 如果您想做的事情需要
  • 如何更改 Laravel 中请求参数的值

    我需要像这样更改请求参数的值 request gt name My Value 我使用这段代码但不起作用 request gt offsetSet img img Try to requestData request gt all requ
  • 如何在 gRPC python 中定义全局错误处理程序

    我试图捕获任何服务程序中引发的任何异常 这样我就可以确保只传播已知的异常 而不传播意外的异常 例如 ValueError TypeError 等 我希望能够捕获任何引发的错误 并格式化它们或将它们转换为其他错误 以更好地控制公开的信息 我不