Как использовать Paho MQTT client в django?
Я пишу приложение django, которое должно выступать в качестве издателя MQTT и подписчика.
где я должен запустить клиент paho и запустить функцию loop_forever ().
должен ли он быть в wsgi.py ?
1 ответов
обновление:
Если вам нужно Django работает в нескольких потоках, то для публикации сообщений из вашего приложения Django вы можете использовать вспомогательные функции из модуля публикации Пахо -https://eclipse.org/paho/clients/python/docs/#id17 В этом случае вам не нужно создавать экземпляр клиента mqtt и запускать цикл. И чтобы подписаться на какую-то тему, рассмотрите запуск MQTT client как автономный скрипт и импортируйте туда необходимые модули вашего приложения Django (и не забудьте настроить среду Django в скрипте).
ответ ниже хорош, только если вы запускаете Django в одном потоке, что не является обычным в производстве.
создать mqtt.py
в папке приложения и поместите туда весь связанный код. Например:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, rc):
client.subscribe("$SYS/#")
def on_message(client, userdata, msg):
# Do something
pass
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("iot.eclipse.org", 1883, 60)
не называй loop_forever()
здесь!
тогда в вашем приложении __init__.py
вызов loop_start()
:
from . import mqtt
mqtt.client.loop_start()
используя loop_start()
вместо loop_forever()
даст вам не блокируя фоновый поток.