【问题标题】:MQTT Broker Connection Refused Error in PythonPython 中的 MQTT 代理连接被拒绝错误
【发布时间】:2019-04-09 21:51:37
【问题描述】:

我一直在尝试连接代理端口 1884。但每次连接被拒绝时都会出错。

    def __init__(self, host='127.0.0.1', port=8080, broker_address='127.0.0.1', broker_port=1884, start_config=None):
    self.app = Bottle()
    """Create the http service app"""

    self.broker = SimpleBroker(address=broker_address, port=broker_port)
    self.broker.start()
    """Create and run the broker (broker always runs as a daemon)"""

    self.brokerAddress = broker_address
    """address of the API broker - usually identical to own address, but others for testing"""

    self.mqttc = Client()
    """mqtt client for publishing messages to API broker - delivered to edge and preprocessing layer"""

    self.mqttc.connect(host=broker_address, port=broker_port)
    """connect to the broker upon startup"""

然后是执行部分:

if __name__ == "__main__":
myAPI = APIServer('127.0.0.1', 8080, '127.0.0.1', start_config='all wheels')
myAPI.start()

错误信息:

Traceback (most recent call last):
File "/root/PycharmProjects/Thesis2019/API/APIServer.py", line 328, in <module>
myAPI = APIServer('127.0.0.1', 8080, '127.0.0.1', start_config='all wheels')
File "/root/PycharmProjects/Thesis2019/API/APIServer.py", line 42, in __init__
self.mqttc.connect(host=broker_address, port=broker_port)
File "/root/PycharmProjects/Thesis2019/venv/lib/python3.6/site-packages/paho/mqtt/client.py", line 839, in connect
return self.reconnect()
File "/root/PycharmProjects/Thesis2019/venv/lib/python3.6/site-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.6/socket.py", line 724, in create_connection
raise err
File "/usr/lib/python3.6/socket.py", line 713, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

另一方面,当我在调试模式下执行它时,我得到了:

[2019-04-09 23:43:05,243] :: WARNING :: hbmqtt.broker.plugins.topic_taboo   :: 'topic-check' section not found in context configuration
[2019-04-09 23:43:05,243] :: INFO :: transitions.core :: Exited state new
[2019-04-09 23:43:05,244] :: INFO :: transitions.core :: Entered state starting
[2019-04-09 23:43:05,248] :: INFO :: hbmqtt.broker :: Listener 'default' bind to 127.0.0.1:1884 (max_connections=100)
[2019-04-09 23:43:05,248] :: INFO :: transitions.core :: Exited state starting
[2019-04-09 23:43:05,248] :: INFO :: transitions.core :: Entered state started

除了所有连接被拒绝的部分,我猜它只是在调试模式下启动它没有问题?

  • Pycharm 以 root 权限启动。
  • 防火墙已检查,但已禁用。
  • 这些端口都没有打开,用 lsof 检查一下。
  • 我使用 Python 3.6,hbmqtt 0.9.5

它适用于 Windows,但不适用于 Mac 或 Linux

为什么每次尝试执行时都会出现连接被拒绝错误?我错过了什么?

提前感谢您的想法。

【问题讨论】:

    标签: python-3.x mqtt


    【解决方案1】:

    解决办法是:

    Mosquitto 默认端口连接在配置文件中设置为 1883,我试图通过端口 1884 进行连接。

    我认为,只要您更改数字,就会设置此属性。这是不正确的,因为它们是静态的。不会动态改变。(当然也有办法。)

    除此之外,API 代理和代理端口号必须交换。我不知道为什么,但是 windows 可以毫无问题地绑定在它上面。但是 Mac OS 和 Linux 会抛出 Connection Refused 错误。

    • Pycharm 以 root 权限启动。
    • 防火墙已检查,但已禁用。
    • 这些端口都没有打开,用 lsof 检查一下。
    • 检查 Mosquitto 的配置文件,如果 allow_annoymous 为 True
    • 控制您的端口连接 10 次。

    在发疯之前这些仍然是有效的检查。 %90 的问题是由这些问题之一引起的。

    如果您有进一步的帮助或问题,您可以在此处发表评论,我将尽力为将来的查询提供帮助。

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 2019-12-22
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多