单例和等待的协程的重用

时间:2019-12-10 15:58:08

标签: python asynchronous singleton coroutine pika

我有以下代码:

class Singleton:
    __instance = None
    connection = None

    @staticmethod
    def getInstance(loop):
        if Singleton.__instance == None:
            Singleton(loop)
        return Singleton.__instance

    def __init__(self, loop):
        Singleton.__instance = self
        Singleton.connection = aio_pika.connect_robust(config.MQ_BROKER_URL, loop=loop)

对于每个传入请求,我都以这种方式等待连接:

mq_connection = await Singleton.getInstance(asyncio.get_event_loop()).connection

我收到此错误:

RuntimeError: cannot reuse already awaited coroutine

问题:

  • 在这里可能我弄错了一些概念,但是如何在同一事件循环中获得单个连接?
  • 如果单例不是一个好主意,我如何控制连接数量以防止为每个请求创建连接?

0 个答案:

没有答案