微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要帮助 python (mqtt-paho) 中的 client.loop_forever() 错误

如何解决需要帮助 python (mqtt-paho) 中的 client.loop_forever() 错误

这是我的代码,它连接,执行 1 次发布,然后读取出现在我的本地主机服务器中的消息。

import time

import paho.mqtt.client as paho


broker="localhost"


def on_message(client,userdata,message):
    time.sleep(1)
    print("received message =",str(message.payload.decode("utf-8")))

client = paho.Client("client-001")
client.on_message = on_message

print("connecting to broker ",broker)
client.connect(broker,port=1883)#connect
client.loop_start() #start loop to process received messages
print("subscribing ")
client.subscribe("anyisfine")#subscribe
time.sleep(2)
print("publishing ")
#client.publish("anyisfine","on")#publish
client.publish("anyisfine","on")#publish
time.sleep(4)
client.loop_forever()

我得到的错误是这个

connecting to broker  localhost
subscribing 
publishing 
received message = on
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Users\simba\AppData\Local\Programs\Python\python38\lib\threading.py",line 932,in _bootstrap_inner
    self.run()
  File "C:\Users\simba\AppData\Local\Programs\Python\python38\lib\threading.py",line 870,in run
    self._target(*self._args,**self._kwargs)
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",line 3452,in _thread_main
    self.loop_forever(retry_first_connection=True)
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",line 1779,in loop_forever
    rc = self.loop(timeout,max_packets)
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",line 1181,in loop
    rc = self.loop_read(max_packets)
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",line 1572,in loop_read
    rc = self._packet_read()
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",line 2266,in _packet_read
    byte = self._sock_recv(1)
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",line 664,in _sock_recv
    return self._sock.recv(bufsize)
AttributeError: 'nonetype' object has no attribute 'recv'

有时甚至是这个,这真的取决于

connecting to broker  localhost
subscribing 
publishing 
received message = on
Traceback (most recent call last):
  File "C:/Users\simba/PycharmProjects/hivemqq/main.py",line 27,in <module>
    client.loop_forever()
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",line 2295,in _packet_read
    data = self._sock_recv(self._in_packet['to_process'])
  File "C:\Users\simba\PycharmProjects\hivemqq\venv\lib\site-packages\paho\mqtt\client.py",in _sock_recv
    return self._sock.recv(bufsize)
AttributeError: 'nonetype' object has no attribute 'recv'

Process finished with exit code 1

最后,它有时会通过单个发布成功连接,但不会读取传入的消息,有时一切正常,直到它不(每次都是随机的)。然后它会给出这两个错误之一。任何帮助将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。