2016-12-21 25 views
1

Я программирование noob для web и mqtt, я работаю над приложением python, которое использует mqtt (через hivemq или rabbitmq broker), а также нужно реализовать http rest api для клиентов.Использование http и mqtt вместе в однопоточном приложении python

Я понял, что с использованием рамки для python-бутылок довольно просто обеспечить простой HTTP-сервер, однако как флакон, так и mqtt имеют свой цикл событий, как мне объединить эти два цикла событий, я хочу иметь однопоточное приложение, чтобы избежать сложности ,

+0

Возможно, вы этого не сделаете. Что именно вы пытаетесь достичь, нам нужно больше деталей – hardillb

+0

, чтобы предоставить вам более подробную информацию, клиенты подключаются к этой услуге через http/rest, однако эта служба взаимодействует со многими другими службами на back-end через mqtt. поэтому эта служба должна запускать цикл mqtt (используя paho python client) и предоставлять HTTP-запросы, в которых она использует бутылку, и, следовательно, она должна запускать цикл запуска бутылки. это можно сделать в 2 разных потоках, мой вопрос в том, что есть способ объединить их в 1 поток? Вы полагаете, что использование 2 потоков - это лучший/единственный выход? – user424060

+0

Я имел в виду, что такое взаимодействие MQTT, это запрос/ответ? – hardillb

ответ

1

Я не знаком с бутылкой, но быстро посмотрю на документы, это не похоже на то, что есть какой-либо другой способ запустить его цикл событий, кроме функции run().

Paho предоставляет loop_start(), который будет запускать собственный поток фона для запуска цикла событий сети MQTT.

Учитывая то похоже, не будет никакого способа, чтобы запустить цикл бутылки вручную, я хотел бы предложить вызова loop_start() перед тем run() и позволить приложения работать на 2 отдельных нитей, так как не существует способа, чтобы объединить их, и вы, вероятно, не хотели бы, чтобы в любом случае ,

Единственное, о чем нужно быть осторожным, будет, если подписчики MQTT будут обновлять данные, отправляемые службой REST, но до тех пор, пока не потоки больших объемов данных, которые вряд ли будут проблемой.

 Смежные вопросы

  • Нет связанных вопросов^_^