我想改进一下socketio.event装饰器,让它打印触发的事件及其参数。我有一个具有self.sio: socketio.Server属性的Manager类。我尝试将一个新的装饰器定义为一个Manager方法,比如它返回一个由self.sio.event修饰的函数,该函数还打印它的数据。我已经尝试过这个解决方案,但它不起作用:
def event(self, func):
@self.sio.event
def wrapper(*args, **kwargs):
print(f'[{func.__name__}] : {args} {kwargs}')
func(*args, **kwargs)
return wrapper有什么建议吗?
发布于 2021-05-16 18:28:34
我认为这样的东西对你来说应该是有效的:
def event(self, func):
def wrapper(*args, **kwargs):
print(f'[{func.__name__}] : {args} {kwargs}')
return func(*args, **kwargs)
return self.sio.on(func.__name__, wrapper)您不能真正在包装器上使用@sio.event,因为将要配置的事件将被命名为wrapper。我的解决方案使用@sio.on装饰器,它显式地接受事件名称。
https://stackoverflow.com/questions/67546162
复制相似问题