首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中需要帮助client.loop_forever()错误(mqtt-泛美卫生组织)

在python中需要帮助client.loop_forever()错误(mqtt-泛美卫生组织)
EN

Stack Overflow用户
提问于 2021-04-14 02:36:02
回答 1查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
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()

我所犯的错误是这个

代码语言:javascript
复制
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'

有时候,就算是这个,也要看情况

代码语言:javascript
复制
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 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 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", line 664, in _sock_recv
    return self._sock.recv(bufsize)
AttributeError: 'NoneType' object has no attribute 'recv'

Process finished with exit code 1

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

EN

回答 1

Stack Overflow用户

发布于 2022-03-18 09:36:18

删除client.loop_start() loop_forever()不需要loop.start(),那么它就可以正常工作了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67084779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档