Mqtt-брокер часто отключается, хотя у него есть уникальный идентификатор клиента - PullRequest
0 голосов
/ 02 ноября 2019

Привет, у меня работает брокер mqtt. Я подключаюсь к нему из python, используя paho-mqtt. Код

def on_connect(client, userdata, flags, rc):
    if rc==0:
        print("connected OK Returned code=",rc)
    else:
        print("Bad connection Returned code=",rc)

    print("Subscribing to topic","data/#")
    client.subscribe("data/#")


def on_disconnect(client, userdata, rc):
   print("Client Got Disconnected")
   if rc != 0:
       print('Unexpected MQTT disconnection. Will auto-reconnect')

   else:
       print('rc value:' + str(rc))

broker_address="ip"
port = 'port'
print("creating new instance")
client = mqtt.Client(clean_session=True) #create new instance
client.on_connect = on_connect
client.on_message = on_message #attach function to callback
client.on_disconnect = on_disconnect

print("connecting to broker")
client.connect(broker_address, port=port,) #connect to broker
client.loop_forever() #stop the loop

Я использую один и тот же код в нескольких скриптах, подключаюсь к брокеру и подписываюсь на тему. Частота отключения была меньше, когда было 5-6 сценариев. У меня около 12-13 сценариев, подключающихся к брокеру, и частота отключений значительно возросла. Что-то не так с соединением в скриптах или с брокером. Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 03 ноября 2019

Полагаю, вашему брокеру не нравится тот факт, что клиент Python по умолчанию имеет нулевую клиентскую единицу. В соответствии со спецификацией он должен рассматривать это как указание на то, что он должен назначить уникальный идентификатор вашему клиенту, но он может неправильно реализовывать спецификацию?

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

...