Я создал колбу с помощью светокопий.Это приложение получает данные через paho.mqtt.client.Это также является триггером для обработки данных и последующего запуска процессов.
'system' - это проект, содержащий mqtt.py и functions.py
- functions.py содержит функцию для обработки данных после получения
- mqtt.pyсодержит определение клиента mqtt
mqtt.py
from app.system import functions
import paho.mqtt.client as mqtt
#....
def on_message(mqttc,obj,msg):
try:
data = json.loads(msg.payload.decode('utf-8'))
# start main process
functions.process(data)
except Exception as e:
print("error: ", e)
pass
После получения данных и запуска обратного вызова on_message я получаю ошибку контекста вне приложения:
ошибка: работа вне контекста приложения.
Это обычно означает, что вы пытались использовать функциональность, необходимую для взаимодействия с текущим объектом приложения каким-либо образом.Чтобы решить эту проблему, настройте контекст приложения с помощью app.app_context ().Для получения дополнительной информации см. Документацию.
Как получить контекст приложения в обратном вызове on_message?Я попытался импортировать current_app и использовать что-то вроде этого
from flask import current_app
#...
def on_message(mqttc,obj,msg):
try:
data = json.loads(msg.payload.decode('utf-8'))
app = current_app._get_current_object()
with app.app_context():
# start main process
functions.process(data)
Я все еще получаю ту же ошибку