【发布时间】:2021-11-11 09:14:26
【问题描述】:
在我的 django 项目中,我将永久订阅 MQTT 主题并在主题更改时触发操作。
在我的__init__.py 应用程序文件中,我尝试:
client1 = mqtt.Client(hex(uuid.getnode()))
data_dict = init_client('IOT/Data/#')
for k, v in data_dict.items():
...do some stuff with data
init_client 函数连接到我的 MQTT 服务器并开始循环(我使用 paho.mqtt.client):
def init_client(t_topic='IOT/Data/#'):
# Instantiate and check connection about MQTT instance
client1.on_connect = on_connect # attach function to callback
client1.on_message = on_message # attach function to callback
if t_topic == 'IOT/Data/#':
client1.message_callback_add(t_topic, on_message_data)
else:
client1.message_callback_add(t_topic, on_message_reg)
client1.on_publish = on_publish # attach function to callback
# client1.on_subscribe =on_subscribe
# attach function to callback
try:
client1.tls_set(mqtt_ca_crt, mqtt_cli_crt, mqtt_cli_key)
client1.tls_insecure_set(True)
except ValueError:
logging.info("SSL/TLS Already configured")
time.sleep(1)
try:
if not client1.is_connected():
client1.connect(mqtt_server, mqtt_port) # connect to broker
client1.connected_flag = False
except Exception:
logging.error("Cannot connect MQTT Client1")
client1.loop_forever()
...and some other stuff
问题是当 loop_forever() 启动时,所有 django 应用程序都被搁置,永远等待。
所以我的问题是: 当我的 django allpication 开始并在每次主题实时更改时收到通知时,如何使用 paho.mqtt(异步)订阅主题? django 还有其他更聪明的方法吗?
提前非常感谢
【问题讨论】:
标签: python django python-asyncio mqtt