【发布时间】:2020-08-01 00:50:57
【问题描述】:
我正在尝试从 gRPC 处理程序中访问方法名称 service/Method。我似乎无法在 grpc.ServicerContext 对象上找到这些数据(而且我很确定它不存在)。我的下一个想法是使用拦截器,因为方法名称是通过grpc.HandlerCallDetails 提供的。问题是没有任何明显的方法可以将此转发给底层处理程序。
不幸的是,grpc.HandlerCallDetails 没有构造函数,因此我们不能将方法名称放入元数据中以便在处理程序中读取。我们必须创建一个命名元组,它与grpc.HandlerCallDetails 的接口相同,并向其中添加一个新的元数据值。
如果有人遇到此问题并有解决方案,或者 grpc 团队中的某个人有解决方法,那就太好了。
此外,这可能会更容易一些,因为此类功能已有现有技术。 grpc-go 有 Method 名称来帮助解决这个 https://pkg.go.dev/google.golang.org/grpc?tab=doc#Method。在 C++ 中,您似乎可以将其从人口普查上下文中拉出来。
【问题讨论】:
标签: python grpc grpc-python