【问题标题】:How to handle custom exceptions with gRPC in Python?如何在 Python 中使用 gRPC 处理自定义异常?
【发布时间】:2021-02-10 14:17:04
【问题描述】:

我需要实现自定义异常以使用 Python 处理 gRPC 请求错误。对于 HTTP 请求,它很简单——当出现错误代码等时,请求库可以很好地捕捉到它。我正在寻找类似的方式让 gRPC 执行以下操作:

try:
    # send gRPC request
except SomeGRPCException as e:
    # custom handle

有没有办法像在 Python 中那样处理 gRPC 错误?还是使用 gRPC 就不会像示例中那样工作?

【问题讨论】:

  • 代码看起来不错。你只需要导入异常。
  • @KlausD。是否有任何 gRPC 库,例如 HTTP 的“请求”,可以处理不同的情况?我可能会通过该特定库捕获那些预定义的异常,然后在 except 块中引发我的自定义异常。你怎么看?

标签: python exception grpc rpc


【解决方案1】:

对于简单的 RPC 错误处理,可以使用 try-catch:

try:
    response = stub.SayHello(...)
except grpc.RpcError as rpc_error:
    if rpc_error.code() == grpc.StatusCode.CANCELLED:
        pass
    elif rpc_error.code() == grpc.StatusCode.UNAVAILABLE:
        pass
    else:
        print(f"Received unknown RPC error: code={rpc_error.code()} message={rpc_error.details()}")

对于复杂的 RPC 错误处理,您可能需要使用尾随元数据: https://github.com/grpc/grpc/tree/master/examples/python/errors

在大多数情况下,try-catch 应该就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    相关资源
    最近更新 更多