使用装饰器打印 python-socketio 事件信息
Print python-socketio events infos using decorators
我想改进 socketio.event
装饰器,让它打印触发的事件及其参数。
我有一个 Manager
class,它有一个 self.sio: socketio.Server
属性。我尝试将新的装饰器定义为 Manager
方法,例如 returns 由 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
有什么推荐吗?
我认为这样的东西应该适合你:
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
装饰器,它显式接受事件名称。
我想改进 socketio.event
装饰器,让它打印触发的事件及其参数。
我有一个 Manager
class,它有一个 self.sio: socketio.Server
属性。我尝试将新的装饰器定义为 Manager
方法,例如 returns 由 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
有什么推荐吗?
我认为这样的东西应该适合你:
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
装饰器,它显式接受事件名称。