Python Paho MQTT: невозможно опубликовать сразу в функции

Я внедряю программу, которая прослушивает определенную тему и реагирует на нее, когда мое ESP8266 публикует новое сообщение. При получении нового сообщения от ESP8266 моя программа вызовет обратный вызов и выполнит ряд задач. Я публикую два сообщения в моей функции обратного вызова обратно в тему, которую слушает Arduino. Однако сообщения публикуются только после выхода из функции.

Спасибо за все ваше время заранее.

Я попытался использовать цикл (1) с таймаутом в 1 секунду внутри функции обратного вызова. Программа немедленно опубликует сообщение, но оно застряло в цикле. Кто-нибудь сможет дать мне несколько советов, как я могу выполнить каждую функцию публикации немедленно в моей функции обратного вызова, а не тогда, когда весь обратный вызов завершается и возвращается к основному loop_forever ()?

import paho.mqtt.client as mqtt
import subprocess
import time

# 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("ESP8266")

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
    client.publish("cooking", '4')
    client.loop(1)
    print("Busy status published back to ESP8266")
    time.sleep(5)
    print("Starting playback.")
    client.publish("cooking", '3')
    client.loop(1)
    print("Free status published published back to ESP8266")
    time.sleep(5)
    print("End of playback.")


client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("192.168.1.9", 1883, 60)
#client.loop_start()

# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_forever()

Ответы на вопрос(1)

Ваш ответ на вопрос