我现在正在使用 AMQP pika 库。我想要开发的是上下文管理器或装饰器,以确保与 Rabbit 建立连接。无法在装饰器中使用生成器的问题,因为它们必须返回被调用的函数。以下示例引发了一个异常:
def ensure_conn(func):
@gen.coroutine
def wrapper(self, *args, **kwargs):
yield self.connection.ensure_connection()
return func(*args, **kwargs)
return wrapper
上下文管理器也存在几乎相同的问题。两次使用yield是不可能的。以下示例引发生成器未停止的异常。
@contextlib.contextmanager
@gen.coroutine
def ensure_conn(self):
yield self.ensure_connection()
yield
请推荐另一种方法?当然,简单的协程调用我已经很满意了。谢谢你。