Python Paho MQTT: Não foi possível publicar imediatamente em uma função

Estou implementando um programa que ouve um tópico específico e reage a ele quando uma nova mensagem é publicada pelo meu ESP8266. Quando uma nova mensagem é recebida do ESP8266, meu programa acionará o retorno de chamada e executará um conjunto de tarefas. Estou publicando duas mensagens na minha função de retorno de chamada de volta ao tópico que o Arduino está ouvindo. No entanto, as mensagens são publicadas somente após a saída da função.

Obrigado por todo o seu tempo de antecedência.

Eu tentei usar o loop (1) com um tempo limite de 1 segundo dentro da função de retorno de chamada. O programa publicará a mensagem imediatamente, mas parece que ficou presa no loop. Alguém será capaz de me fornecer alguns indicadores, como posso executar cada função de publicação imediatamente na minha função de retorno de chamada, em vez de quando o retorno de chamada completo for concluído e retornar ao loop_forever () principal?

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()

questionAnswers(1)

yourAnswerToTheQuestion