flask 使用init_app使用mqtt扩展
时间: 2023-12-12 18:02:49 浏览: 128
flask+socket.io 实时dashboard 可接stormMqtt
在使用 Flask 和 MQTT 扩展的时候,通常会在 Flask 应用的工厂函数中初始化 MQTT 扩展,例如:
```python
from flask import Flask
from flask_mqtt import Mqtt
app = Flask(__name__)
mqtt = Mqtt(app)
# some more code...
```
这种方式可以正常工作,但是如果你想在多个 Flask 应用中共享同一个 MQTT 客户端,那么这种方式就不太方便了。
为了解决这个问题,Flask-MQTT 扩展提供了一个 `init_app` 方法,可以在任何时候初始化 MQTT 客户端。例如:
```python
from flask import Flask
from flask_mqtt import Mqtt
mqtt = Mqtt()
def create_app():
app = Flask(__name__)
mqtt.init_app(app)
# some more code...
return app
```
这样,你就可以在不同的 Flask 应用中共享同一个 MQTT 客户端了。同时,你也可以在 Flask 应用的其他地方调用 `mqtt` 对象的方法,例如:
```python
from your_app import mqtt
@mqtt.on_connect()
def on_connect(client, userdata, flags, rc):
mqtt.subscribe('your_topic')
```
总之,使用 `init_app` 方法可以让你更加灵活地管理 MQTT 客户端,同时也可以方便地在多个 Flask 应用中共享同一个客户端。
阅读全文