如何在Flask微框架中创建单例对象

问题描述 投票:0回答:1

我正在为Producer创建一个类,该类将消息推送到RabbitMQ。它使用pika module。我想创建一个处理程序,以便可以控制与Rabbit MQ交互的连接数。

是否有一种方法可以将其添加到app_context中,然后再引用它,或者有一种方法可以使用init_app来定义此处理程序。

任何代码段都将提供非常好的帮助。

python flask rabbitmq
1个回答
0
投票

在Python中,大多数情况下不需要使用单例模式。但是您仍然可以使用它。

class Singleton(object):
    _instance = None

    def __init__(self):
        raise Error('call instance()')

    @classmethod
    def instance(cls):
        if cls._instance is None:
            cls._instance = cls.__new__(cls)
            # more init operation here
        return cls._instance

要单独使用Flask(或任何其他Web框架)应用程序,只需尝试这样。

class AppContext(object):
    _app = None

    def __init__(self):
        raise Error('call instance()')

    @classmethod
    def app(cls):
        if cls._app is None:
            cls._app = Flask(__name__)
            # more init opration here
        return cls._app

app = AppContext.app() # can be called as many times as you want

或继承Flask类并使其成为单例。

© www.soinside.com 2019 - 2024. All rights reserved.