MQTT Broker Connection отклонил ошибку в Python - PullRequest
2 голосов
/ 10 апреля 2019

Я пытался подключиться к порту 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

Почему у меня ошибка соединения отказывается каждый раз, когда я пытаюсь ее выполнить?Чего мне не хватает?

Заранее спасибо за идеи.

1 Ответ

0 голосов
/ 14 мая 2019

Решение:

Соединение с портом Mosquitto по умолчанию установлено в 1883 в файле конфигурации, где я пытался подключиться через порт 1884.

Я думал, что эти свойства устанавливаются всякий раз, когда вы меняете число. Что не правильно, так как они статичны. не меняется динамически. (конечно, есть способ.)

Кроме того, необходимо изменить номера портов API-брокера и брокера. Я не знаю почему, но окна могут связываться поверх этого без проблем. но Mac OS и Linux выдают ошибку «Отказано в соединении».

  • Pycharm запускается с привилегией root.
  • Брандмауэр проверен и отключен.
  • Ни один из этих портов не открыт, проверьте это с помощью lsof.
  • Проверьте конфигурационный файл Mosquitto, если allow_annoymous - True
  • Контролируйте свои соединения порта 10 раз.

Это все еще действительная проверка, прежде чем сходить с ума. % 90 проблем вызвано одной из этих проблем.

Если у вас есть дополнительная помощь или вопросы, вы можете оставить комментарий здесь, и я постараюсь помочь для будущих запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...