mqtt_client不会立即发布

时间:2017-10-19 06:56:00

标签: python python-2.7 python-3.x mqtt iot

我正在尝试一个简单的网络应用程序,我在python中使用paho-mqtt (mosquitto)中的发布订阅模型进行多个节点通信。

我想要建模的用例是一个节点有一个需要执行的特定工作,它应该确认收到执行该工作的请求,如果请求节点在一定时间内没有收到确认,它重新提交请求。

我开始使用为on_message

mqtt_client事件指定的方法执行作业

我的on_message方法

中有以下类型的代码
# mqtt_client is the client object
# Job represents the job I need to start
# mqtt_topic is the topic the requester listens
def on_message(client, userdata, msg):
  request = msg.payload
  if "PERFORM" in request:
    mqtt_client.publish(mqtt_topic, "ACK", 2, False)
    job = Job()
    job.dispatch()

这项工作肯定需要任意长的时间才能完成。 我面临的问题是,mqtt_client在启动作业之前不会立即发送“ACK”消息,并且等待发送直到作业完成。我尝试发布“ACK”并在不同的线程上调度作业,但结果却相同。

现在因为请求者认为请求每次都超时,我进入请求循环和作业调度。 在开始这项工作之前,我想知道是否有任何方法可以让“ACK”发布完成。

0 个答案:

没有答案