【问题标题】:How to create a singleton object in Flask micro framework如何在 Flask 微框架中创建单例对象
【发布时间】:2020-04-16 00:35:02
【问题描述】:

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

有没有办法我们可以将它添加到app_context 并稍后引用它,或者我们是否可以使用init_app 来定义这个处理程序。

任何代码 sn-p 都会有很好的帮助。

【问题讨论】:

    标签: python flask rabbitmq


    【解决方案1】:

    在 Python 中,大多数情况下不需要使用单例模式,因为 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 类并将自己设置为单例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-05
      • 2016-12-01
      • 2015-07-07
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      相关资源
      最近更新 更多