Как решить проблему с загрузкой страницы Fastapi и MQTT
Пишу небольшой обработчик запросов mqtt на python с помощью paho и fastapi. При переходе на страницу, где должен быть ответ, ошибка RuntimeWarning: Enable tracemalloc to get the object allocation traceback, она из за того, что mqtt не поддерживает асинхронность, но при этом обычные функции не загружаются, вот код:
from fastapi import FastAPI
import random
from paho.mqtt import client as mqtt
app = FastAPI()
broker = "localhost" #default broker
port = 1883 #mqtt port
topic = "scales" # topic for scales
# generate client ID with pub prefix randomly
client_id = f'python-mqtt-{random.randint(0, 1000)}'
username = 'mosquitto' #osquitto username
password = 'mosquitto' #mosquitto password
@app.get("/mqtt")
async def main_data_app():
async def on_connect(client, userdata, flags, rc):
res = "Connected with result code "+str(rc)
client.subscribe(topic)
return res
# The callback for when a PUBLISH message is received from the server.
async def on_message(client, userdata, msg):
resultat = msg.topic+" "+str(msg.payload)
return resultat
client = mqtt.Client(client_id)
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set(username, password)
client.connect(broker, port, 60)
client.loop_forever()