Skip to main content
 首页 » 编程设计

python之如何退出 mqtt forever_loop

2025年05月04日14lautakyan007

我最近创建了一个程序来接收数据。

我想在收到特定数据时打破循环。

例如,如果我收到“1”给另一台机器,那么我的系统就会认为它 为非法号码,则中断循环停止接收数据。

下面是我的代码,你也可以在我的代码中看到client.loop_stop()。但它不起作用。

我还在我的代码中尝试了 sys.exit()。

虽然它在这种情况下有效,但不适合在其他情况下使用。

所以我想知道如何打破客户端的循环,我不想通过sys.exit() 关闭整个系统。

import paho.mqtt.client as mqtt 
# This is the Subscriber 
a="" 
def on_connect(client, userdata, flags, rc): 
  print("Connected with result code "+str(rc)) 
  client.subscribe("hello") 
 
def on_message(client, userdata, msg): 
    info=msg.payload.decode() 
    print info 
    if str(info)=='1': 
      print "OK" 
      client.loop_stop() 
 
 
client = mqtt.Client() 
client.connect("myIp",1883,60) 
 
client.on_connect = on_connect 
client.on_message = on_message 
client.loop_forever() 

请您参考如下方法:

为了停止loop_forever,您必须使用client.disconnect,而不是loop_stop。