Как одновременно использовать subscribe и publish в mqtt python?

Есть код. Мне нужно всегда прослушивать топик test и как только туда что-то придет, отправлять publish('hello').но на данный момент все зацикливается, тк используется метод loop_forever(). Но как мне быть, чтобы прослушивать всегда, а отправлять всего один раз?

import paho.mqtt.client as mqtt
import paho.mqtt.publish as publish
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe("/test/#")


# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
    imei = msg.topic.split('test/')[1]
    data = msg.payload.decode()
    print(imei)
    print(data)
    publish(imei)
    

def publish(imei):
    client = mqtt.Client()
    user = 'test'
    passw = '1111'
    client.username_pw_set(user,passw)
    client.connect("localhost",1883)
    
    topic = '/test/'+ imei
    client.publish(topic,'hello')
    print('SEND')
    client.disconnect()
    

client = mqtt.Client()
user = 'test'
passw = '1111'
client.username_pw_set(user,passw)
client.on_connect = on_connect
client.on_message = on_message

client.connect("localhost", 1883, 60)

client.loop_forever()


Ответы (0 шт):