Итак, у меня есть работающий док-контейнер toke/mosquitto, к которому я могу подключиться из внешнего докера.
Затем я использую док-контейнер Python, который должен публиковать данные моему брокеру mosquitto. Вот мой код:
import paho.mqtt.client as paho
import time
import random
broker = "localhost"
port = 1883
def on_publish(client, userdata, result):
print("Device 1 : Data published.")
pass
client = paho.Client("admin")
client.on_publish = on_publish
client.connect(broker, port)
for i in range(20):
d = random.randint(1, 5)
# telemetry to send
message = "Device 1 : Data " + str(i)
time.sleep(d)
# publish message
ret = client.publish("/data", message)
print("Stopped...")
Код работает, пытаясь подключиться к брокеру mqtt, не работающему в докере.
Но я не могу понять, как заставить оба работать с докером и подключаться друг к другу. Мое сообщение об ошибке:
Traceback (most recent call last):
File "./pub_client1.py", line 15, in <module>
client.connect(broker, port)
File "/usr/local/lib/python3.8/site-packages/paho/mqtt/client.py", line 937, in connect
return self.reconnect()
File "/usr/local/lib/python3.8/site-packages/paho/mqtt/client.py", line 1071, in reconnect
sock = self._create_socket_connection()
File "/usr/local/lib/python3.8/site-packages/paho/mqtt/client.py", line 3522, in _create_socket_connection
return socket.create_connection(addr, source_address=source, timeout=self._keepalive)
File "/usr/local/lib/python3.8/socket.py", line 808, in create_connection
raise err
File "/usr/local/lib/python3.8/socket.py", line 796, in create_connection
sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address
Я уже использую сеть докеров. Что мне не хватает?
Спасибо уже за помощь :)