#python #python-2.7 #activemq #mqtt
#python #python-2.7 #activemq #mqtt
Вопрос:
У меня есть сервер ActiveMQ, работающий на 192.168.11.11, для тестирования я попытался запустить клиент MQTT с того же сервера, и я получил следующую ошибку
[Errno 113] No route to host
Traceback (most recent call last):
File "mqtt-client.py", line 45, in <module>
client.connect("192.168.11.11", 30083, 60) # Connect to (broker, port, keepalive-time)
File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 839, in connect
return self.reconnect()
File "/usr/lib/python2.7/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/lib64/python2.7/socket.py", line 571, in create_connection
raise err
error: [Errno 113] No route to host
Traceback (most recent call last):
File "mqtt-client.py", line 45, in <module>
client.connect("192.168.11.11", 30083, 60) # Connect to (broker, port, keepalive-time)
File "/usr/lib/python2.7/site-packages/paho/mqtt/client.py", line 839, in connect
return self.reconnect()
File "/usr/lib/python2.7/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/lib64/python2.7/socket.py", line 571, in create_connection
raise err
socket.error: [Errno 113] No route to host
Я подключился к telnet с того же компьютера-брокера
# telnet 192.168.11.11 30083
Trying 192.168.11.11...
Connected to 192.168.11.11.
Escape character is '^]'.
Проверьте netstat
netstat -tulnp | grep 30083
tcp 1 0 0.0.0.0:30083 0.0.0.0:* LISTEN 15815/kube-proxy
Но когда я изменил код, как показано ниже, и он работает
От:
client.connect("192.168.11.11", 30083, 60)
Для:
client.connect("0.0.0.0", 30083, 60)
Кто-нибудь может объяснить, в чем может быть причина этого?
ПРАВКА1:
Рабочий код
def on_connect(client, userdata, flags, rc):
print("Connected with result code {0}".format(str(rc)))
client.subscribe("app/status")
def on_disconnect(client, userdata, rc):
logger.info("Disconnected with result code {0}".format(str(rc)))
def on_message(client, userdata, msg):
print("Message received-> " msg.topic )
try:
log_setup()
client = mqtt.Client("amq_comm_test")
client.enable_logger(logger)
client.on_connect = on_connect
client.on_message = on_message
client.connect("0.0.0.0", 30083, 60)
client.loop_forever()
except KeyboardInterrupt:
# handle Ctrl-C
logging.warn("Cancelled by user")
except Exception as ex:
logging.exception("Unhandled errorn{}".format(ex))
raise
finally:
logging.shutdown()
Не рабочий код
Если я запускаю этот код с другого компьютера, он работает нормально. это создает проблему только тогда, когда ActiveMQ и этот код выполняются на одном сервере
def on_connect(client, userdata, flags, rc):
print("Connected with result code {0}".format(str(rc)))
client.subscribe("app/status")
def on_disconnect(client, userdata, rc):
logger.info("Disconnected with result code {0}".format(str(rc)))
def on_message(client, userdata, msg):
print("Message received-> " msg.topic )
try:
log_setup()
client = mqtt.Client("amq_comm_test")
client.enable_logger(logger)
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.11.11", 30083, 60)
client.loop_forever()
except KeyboardInterrupt:
logging.warn("Cancelled by user")
except Exception as ex:
logging.exception("Unhandled errorn{}".format(ex))
raise
finally:
logging.shutdown()
Комментарии:
1. Хорошо,
0.0.0.0
все еще бессмысленно для адреса назначения, вы должны попробовать с127.0.0.1
. НоNo route to host error
для локального IP-адреса может означать, что ваша таблица маршрутизации перепутана. Вы запускалисьtelnet
на той же машине, что и сломанный, или еще где?2. Это работает и с 127.0.0.1, я запускаю telnet с того же компьютера, и это работает.