2014-10-30 11 views
5

Pracuję na stronie internetowej i używam Django do programowania. Mam kilka urządzeń, które komunikują się z witryną za pomocą MQTT, a ja zamierzam użyć klienta paho-mqtt. Mój problem polega na tym, że aby paho-mqtt mógł funkcjonować, muszę wywołać funkcję, która będzie trwać wiecznie, a paho-mqtt będzie nadal nasłuchiwać wiadomości. Jaki jest najlepszy sposób na wywołanie tej pętli i zawarcie jej we własnym wątku?Jak radzić sobie z funkcją loop_forever funkcji mqtt podczas używania Django?

Czy mogę po prostu utworzyć nowy wątek, czy powinienem użyć czegoś takiego jak seler?

+0

może użycie 'celety' jest najlepszym wyborem. –

+0

W jaki sposób zakończyłeś integrację? Mam podobny przypadek, ale muszę tylko opublikować materiał, więc tworzę nowy obiekt mqtt dla każdego żądania, które tego potrzebuje. Zastanawiam się, czy to marnuje zasoby. – rslite

+0

Jeśli utworzysz klienta takiego jak client.loop_forever(), później wywołasz metodę client.loop_start(). Następnie po prostu zadzwoń do client.publish ("paho/temperature", temperature), kiedy potrzebujesz. Parametr loop_forever powinien obsługiwać rozłączniki i odnawiać połączenia. – mike29892

Odpowiedz

3

Zamiast tego użyj interfejsu gwintowanego do paho-mqtt. Spowoduje to uruchomienie wątku tła obsługującego przetwarzanie w sieci i będzie dostępny pod numerem loop_start(). Alternatywnie możesz stworzyć własny wątek i zadzwonić pod numer loop().

+0

Dzięki! Nie wiem, jak to przegapiłem. – mike29892

Powiązane problemy