From b7773c65efcf6be5e3335fb561a88a39b80385fd Mon Sep 17 00:00:00 2001 From: marcsello Date: Sat, 19 Sep 2020 16:39:35 +0200 Subject: [PATCH] Fixed database operations in MQTT calls --- src/app.py | 10 +++++++++- src/mqtt_methods.py | 1 - 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/app.py b/src/app.py index 6e1d6e6..1b4b65f 100644 --- a/src/app.py +++ b/src/app.py @@ -11,7 +11,7 @@ from db import db from marshm import ma from mqtt_flask_instance import mqtt -import mqtt_methods # This file contains a decorator +from mqtt_methods import handle_status_message """ Main Flask RESTful API @@ -77,6 +77,14 @@ def handle_connect(client, userdata, flags, rc): mqtt.subscribe(f"{MQTT_STATUS_TOPIC}/#") +@mqtt.on_topic(f"{config.MQTT_STATUS_TOPIC}/#") +def handle_status_message_proxy(*args, **kwargs): + """ + This proxy puts the call into a Flask context, so database operations can be performed + """ + with app.app_context(): + handle_status_message(*args, **kwargs) + api.add_resource(AllDevicesResource, "/devices") api.add_resource(AllDevicesOfflineResource, "/devices/offline") api.add_resource(AllDevicesOnlineResource, "/devices/online") diff --git a/src/mqtt_methods.py b/src/mqtt_methods.py index d26d4d4..d2e3bb6 100644 --- a/src/mqtt_methods.py +++ b/src/mqtt_methods.py @@ -20,7 +20,6 @@ sensorschema = SensorSchema(many=False) LOGGER = logging.getLogger(__name__) -@mqtt.on_topic(f"{config.MQTT_STATUS_TOPIC}/#") def handle_status_message(client, userdata, message): data = dict( topic=message.topic,