我不知道为什么,但这段代码有时会起作用,有时会抛出任何错误的错误? :

问题描述 投票:0回答:1

我有这个代码,它发布了不同主题的多条消息。

""" 
Publish some messages to queue
"""
import paho.mqtt.publish as publish

host ="test.mosquitto.org"

msgs = [{'topic': "A/A1", 'payload': "30"},
        {'topic': "A/A2", 'payload': "40"},
        {'topic': "A/A3", 'payload': "1"}]


if __name__ == '__main__':

    # publish multiple messages
    publish.multiple(msgs, hostname=host)

但有时它适用于我并发布数据,有时会抛出此错误。

Traceback (most recent call last):
  File "/home/pi/Desktop/NRF24L01/publish.py", line 22, in <module>
    publish.multiple(msgs, hostname=host)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/publish.py", line 159, in multiple
    client.connect(hostname, port, keepalive)
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 839, in connect
    return self.reconnect()
  File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line 962, in reconnect
    sock = socket.create_connection((self._host, self._port), source_address=(self._bind_address, 0))
  File "/usr/lib/python3.5/socket.py", line 693, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/usr/lib/python3.5/socket.py", line 732, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] **Temporary failure in name resolution**

经过大量的研究后,我看到一些评论说它是DNS问题或代理已关闭但无论如何都无法解决。请任何能帮助我的人?提前致谢。

python mqtt
1个回答
3
投票

错误的重要部分在于:

socket.gaierror: [Errno -3] **Temporary failure in name resolution**

这意味着您运行代码的Raspberry Pi无法找到test.mosquitto.org的IP地址。

这很可能意味着您拥有的代码没有任何问题,但您需要了解Raspberry Pi如何连接到互联网。

它可能是任何数量的问题,但其中一些可能是:

  • 弱WiFi连接
  • 有缺陷的宽带连接
  • 您的ISP存在问题

不幸的是,我们真的没有办法知道它是远程的。

© www.soinside.com 2019 - 2024. All rights reserved.