Jac*_*ack 4 python google-cloud-platform nginx-reverse-proxy grpc-python
我的 Web 应用程序向可扩展服务代理(ESP) 发出 HTTP 请求,后者又委托给gRPC 服务器(用 Python 编写)。忽略Android和iOS客户端,架构是:
ESP 是一个nginx 反向代理。
gRPC 服务器(参考架构中的“您的代码”)可能会引发异常,在这种情况下,我使用context.abort引发异常并以非正常状态终止 RPC:
try:
# Do something that could fail.
except ValueError as e:
context.abort(grpc.StatusCode.DATA_LOSS, str(e))
Run Code Online (Sandbox Code Playgroud)
虽然可以使用set_code和set_details,但它们仍然会导致 HTTP 状态为 200 OK。
有两个问题:
gRPC状态代码由 ESP 容器(nginx 代理)转换为通用500 Internal Server Error.
随附的详细信息已被删除。
2. 组合意味着 Web 客户端至多有一个500 Internal Server Error针对gRPC 服务器引发的所有异常的情况。
最终,我不明白如何将更多信息(理想情况下,自定义)错误返回给网络客户端。
| 归档时间: |
|
| 查看次数: |
11725 次 |
| 最近记录: |