2016-12-21 8 views
1

웹 및 mqtt 프로그래밍에 대한 멍청한 질문입니다. mqtt (hivemq 또는 rabbitmq 중개인을 통해)를 사용하는 python 응용 프로그램에서 작업 중이며 http 나머지 API를 구현해야합니다. 고객.단일 스레드 파이썬 응용 프로그램에서 http 및 mqtt을 함께 사용

파이썬 병 프레임 워크를 사용하면 간단한 http 서버를 제공하기가 매우 쉽지만, 병과 mqtt는 모두 이벤트 루프가 있습니다. 어떻게 이러한 2 개의 이벤트 루프를 결합합니까? 복잡하지 않도록 단일 스레드 응용 프로그램을 갖고 싶습니다. .

+0

아마도 그렇지 않습니다. 달성하고자하는 것은 정확히 무엇입니까? 더 자세한 내용을 알려면 – hardillb

+0

이 필요합니다. 클라이언트는 http/rest를 통해이 서비스에 연결하지만,이 서비스는 mqtt를 통해 백엔드의 다른 많은 서비스와 상호 작용합니다. 그래서이 서비스는 paho python 클라이언트를 사용하여 mqtt 루프를 실행하고 병을 사용하는 http 요청을 제공해야하므로 병의 실행 루프를 실행해야합니다. 이것은 2 개의 다른 스레드에서 할 수 있습니다, 내 질문은 거기에 1 스레드에서 이들을 결합하는 방법은 무엇입니까? 2 개의 스레드를 사용하는 것이 더 좋고/밖에 나가는 것을 제안합니까? – user424060

+0

MQTT 상호 작용이란 요청/응답입니까? – hardillb

답변

1

병에 익숙하지 않지만 문서를 살펴보면 다른 방법으로 run() 기능을 사용하지 않고 이벤트 루프를 시작할 수있는 것처럼 보입니다.

Paho는 loop_start()을 제공하며 MQTT 네트워크 이벤트 루프를 실행하기위한 자체 스레드를 시작합니다. 이 주어

수동으로 내가 거기에 그들을 결합 할 수있는 방법이 없습니다 당신은 아마 어쨌든 싶지 것처럼 run() 전에 loop_start()를 호출하고이 개 별도의 스레드 응용 프로그램 실행시키는 제안 병 루프를 실행 할 수있는 방법은없는 모양 .

MQTT 서브 스크립 션이 REST 서비스가 보내는 데이터를 갱신하지만 문제점이 될 가능성이없는 대량의 데이터를 스트리밍하지 않는 경우에만주의해야합니다.