如何使用Python在拦截器中读取grpc原型请求?
在PHP中,我可以阅读$argument
,这正是我所需要的。
<?php
use Grpc\Interceptor;
class MyInterceptor extends Interceptor
{
public function interceptUnaryUnary($method,
$argument,
$deserialize,
array $metadata = [],
array $options = [],
$continuation)
{
// $argument is what I needto
return parent::interceptUnaryUnary($method, $argument, $deserialize, $metadata, $options, $continuation);
}
}
答案 0 :(得分:0)
不幸的是,gRPC Python没有完整的服务器拦截器实现,无法让您访问request
或servicer_context
,但是您可以访问method
字符串和invocation_metadata
,有关更多详细信息,请检查history。如果要实现的语义可以在Python的元类或继承中实现,请这样做。如果您想请求此功能,请在GitHub仓库grpc/grpc ...
以下一些资源可以帮助您找到答案:
答案 1 :(得分:-1)
我实现了一个小的grpc-interceptor程序包,该程序包提供了可以访问请求和上下文的服务器拦截器。它使用内置的grpc.ServerInterceptor
,只是简化了界面。
以下是使用方法的简短摘要:
class MyInterceptor(ServerInterceptor):
def intercept(self, method, request, context, method_name):
# Do fancy stuff here...
return method(request, context)
documentation中有更完整的示例。
它具有MIT许可证,因此您可以随意使用它。如果您不想使用该软件包,但想了解它的工作原理,则代码为here。改编自OpenTracing PR。