【问题标题】:Print python-socketio events infos using decorators使用装饰器打印 python-socketio 事件信息
【发布时间】:2021-05-15 11:20:41
【问题描述】:

我想改进 socketio.event 装饰器,使其打印触发的事件及其参数。 我有一个 Manager 类,它有一个 self.sio: socketio.Server 属性。我尝试将一个新的装饰器定义为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

有什么推荐吗?

【问题讨论】:

    标签: python socket.io python-socketio


    【解决方案1】:

    我认为这样的事情应该适合你:

        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 装饰器,它明确接受事件名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-21
      • 2019-10-20
      • 2022-12-01
      • 2011-09-05
      • 2013-01-15
      • 2011-09-06
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多