grpc 拦截器 python_如何在grpcpython中定义全局错误处理程序

正如前面的一些评论所建议的,我尝试了元类方法,它非常有效。在

附件是一个简单的例子来演示如何拦截grpc调用。

您可以通过向元类提供一个可以应用于每个函数的decorator列表来扩展它。在

另外,对于应用包装器的方法,最好是更具选择性。一个好的选择是列出自动生成的基类的方法,并且只包装这些方法。在from types import FunctionType

from functools import wraps

def wrapper(method):

@wraps(method)

def wrapped(*args, **kwargs):

# do stuff here

return method(*args, **kwargs)

return wrapped

class ServicerMiddlewareClass(type):

def __new__(meta, classname, bases, class_dict):

new_class_dict = {}

for attribute_name, attribute in class_dict.items():

if isinstance(attribute, FunctionType):

# replace it with a wrapped version

attribute = wrapper(attribute)

new_class_dict[attribute_name] = attribute

return type.__new__(meta, classname, bases, new_class_dict)

# In order to use

class MyGrpcService(grpc.MyGrpcServicer, metaclass=ServicerMiddlewareClass):

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值