Служба зависла при подключении к брокеру MQTT (on_connection), но журналы брокера показывают связь со службой? Почему неPython

Программы на Python
Ответить
Anonymous
 Служба зависла при подключении к брокеру MQTT (on_connection), но журналы брокера показывают связь со службой? Почему не

Сообщение Anonymous »

В настоящее время я настраиваю некоторые службы для работы с брокером mqtt и помещаю все в контейнер. Есть один сервис, который вне контейнеров работает отлично и без проблем подключается и регистрирует соединение с брокером, но внутри контейнеров он, очевидно, зависает при вызове функции on_connection. Странно то, что он по-прежнему отображается в журналах брокеров, отправляя и получая пинги, а также настроен идентично другим службам, которые все правильно регистрируют и не зависают.
Остановка на этом:
"Назначение обратных вызовов...
on_connect OK
on_disconnect OK"
Внутри службы файл:
client = mqtt.Client(
client_id="event-processor",
protocol=mqtt.MQTTv5,
userdata={'processor': processor}
)

print("Assigning callbacks...", flush=True)
client.on_connect = on_connect
print("on_connect OK", flush=True)
client.on_message = on_message

def on_connect(client, userdata, flags, rc, properties=None):
"""Callback when connected to MQTT broker"""
print(f"[DEBUG] on_connect called, rc={rc}")
if rc == 0:
print(f" Connected to MQTT broker at {MQTT_BROKER}:{MQTT_PORT}")
client.subscribe(MQTT_TOPIC)
print(f" Subscribed to: {MQTT_TOPIC}")
else:
print(f" Failed to connect to MQTT broker (code: {rc})")

мре:
import paho.mqtt.client as mqtt

# ---- Config ----
MQTT_BROKER = "localhost" # change if needed
MQTT_PORT = 1883
MQTT_TOPIC = "test/topic"

# ---- Callbacks ----
def on_connect(client, userdata, flags, rc, properties=None):
"""Callback when connected to MQTT broker"""
print(f"[DEBUG] on_connect called, rc={rc}", flush=True)
if rc == 0:
print(f"Connected to MQTT broker at {MQTT_BROKER}:{MQTT_PORT}", flush=True)
client.subscribe(MQTT_TOPIC)
print(f"Subscribed to: {MQTT_TOPIC}", flush=True)
else:
print(f"Failed to connect to MQTT broker (code: {rc})", flush=True)

def on_message(client, userdata, msg):
print(f"Message received: {msg.topic} -> {msg.payload.decode()}", flush=True)

# ---- Main ----
def main():
processor = object() # placeholder for your real processor

client = mqtt.Client(
client_id="event-processor",
protocol=mqtt.MQTTv5,
userdata={'processor': processor}
)

print("Assigning callbacks...", flush=True)
client.on_connect = on_connect
print("on_connect OK", flush=True)
client.on_message = on_message

print("Connecting to broker...", flush=True)
client.connect(MQTT_BROKER, MQTT_PORT)

# Required to process network traffic and trigger callbacks
client.loop_forever()

if __name__ == "__main__":
main()import paho.mqtt.client as mqtt

# ---- Config ----
MQTT_BROKER = "localhost" # change if needed
MQTT_PORT = 1883
MQTT_TOPIC = "test/topic"

# ---- Callbacks ----
def on_connect(client, userdata, flags, rc, properties=None):
"""Callback when connected to MQTT broker"""
print(f"[DEBUG] on_connect called, rc={rc}", flush=True)
if rc == 0:
print(f"Connected to MQTT broker at {MQTT_BROKER}:{MQTT_PORT}", flush=True)
client.subscribe(MQTT_TOPIC)
print(f"Subscribed to: {MQTT_TOPIC}", flush=True)
else:
print(f"Failed to connect to MQTT broker (code: {rc})", flush=True)

def on_message(client, userdata, msg):
print(f"Message received: {msg.topic} -> {msg.payload.decode()}", flush=True)

# ---- Main ----
def main():
processor = object() # placeholder for your real processor

client = mqtt.Client(
client_id="event-processor",
protocol=mqtt.MQTTv5,
userdata={'processor': processor}
)

print("Assigning callbacks...", flush=True)
client.on_connect = on_connect
print("on_connect OK", flush=True)
client.on_message = on_message

print("Connecting to broker...", flush=True)
client.connect(MQTT_BROKER, MQTT_PORT)

# Required to process network traffic and trigger callbacks
client.loop_forever()

if __name__ == "__main__":
main()


Подробнее здесь: https://stackoverflow.com/questions/798 ... gs-show-co
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»