如何从gRPC服务返回错误?

时间:2018-02-07 19:24:35

标签: ruby error-handling microservices grpc

我有一个在Ruby中运行的简单gRPC服务。在某些情况下,我想以受控方式向客户端返回错误,例如带有错误消息的HTTP状态代码。我没有从文档中看到任何明确的方法来做到这一点;这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

经过一段时间的挖掘,我认为正确的答案是使用GRPC::BadStatus,如here所述:

  

BadStatus是一个表示错误的异常类   发生在GRPC连接的任何一端。它被提升了   表示应将状态错误返回到a的另一端   GRPC连接;当它被抓住时意味着这一端收到了一个状态   错误。

     

每个模块中都有BadStatus的子类   GRPC状态。例如,GRPC::Cancelled类对应于状态   CANCELLED

     

有关每个状态代码的详细说明,请参阅https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/status.h

所以,提出这样的错误

raise GRPC::BadStatus.new_status_exception(CANCELLED)

应该这样做。