Программа должна работать все время и получать сообщения от сервера, а когда она получает подтверждение от сервера, она запускается on_subscribe
.
Вы можете использовать т.е.
client.loop_forever()
чтобы запустить его все время
import paho.mqtt.client as mqtt
def on_subscribe(client, userdata, mid, granted_qos):
print("Subscribed", client, userdata, mid, granted_qos)
def on_message(client, userdata, message):
#print('on_message:', client, userdata, message)
#print(dir(message))
print('on_message:', message.payload.decode())
host = "mqtt.eclipse.org"
client = mqtt.Client()
client.connect(host, port=1883, keepalive=60, bind_address="")
client.on_message = on_message
client.on_subscribe = on_subscribe
client.subscribe('temp', 1)
client.loop_forever()
Документ: paho-mqtt