【发布时间】:2020-04-16 00:35:02
【问题描述】:
我正在为Producer 创建一个类,它将消息推送到RabbitMQ。它使用pikamodule。
我想创建一个处理程序,以便我可以控制与 Rabbit MQ 交互的连接数。
有没有办法我们可以将它添加到app_context 并稍后引用它,或者我们是否可以使用init_app 来定义这个处理程序。
任何代码 sn-p 都会有很好的帮助。
【问题讨论】:
我正在为Producer 创建一个类,它将消息推送到RabbitMQ。它使用pikamodule。
我想创建一个处理程序,以便我可以控制与 Rabbit MQ 交互的连接数。
有没有办法我们可以将它添加到app_context 并稍后引用它,或者我们是否可以使用init_app 来定义这个处理程序。
任何代码 sn-p 都会有很好的帮助。
【问题讨论】:
在 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 类并将自己设置为单例。
【讨论】: