Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 23160

'azure.iot.device.common.transport_exceptions.ConnectionDroppedError: Unexpected disconnection\n'

$
0
0

I have multiple devices on Azure IOT hub, which I am trying to connect, send telemetry message and disconnect. This process is happening in multithread operation i.e., each device's operation is taking place in single thread. After connecting to device, I am getting

Exception caught in background thread. Unable to handle.

['azure.iot.device.common.transport_exceptions.ConnectionDroppedError: Unexpected disconnection\n']until I call client.disconnect()

Even though the device shows connected on the IOT Explorer.How to avoid this error?
Logs:

INFO:azure.iot.device.common.mqtt_transport:disconnected with result code: 7DEBUG:azure.iot.device.common.mqtt_transport:  File "C:\Users\mpatle\AppData\Local\Programs\Python\Python39\lib\threading.py", line 930, in _bootstrap    self._bootstrap_inner()  File "C:\Users\mpatle\AppData\Local\Programs\Python\Python39\lib\threading.py", line 973, in _bootstrap_inner    self.run()  File "C:\Users\mpatle\AppData\Local\Programs\Python\Python39\lib\threading.py", line 910, in run    self._target(*self._args, **self._kwargs)  File "C:\Users\mpatle\source\repos\GetliveSvanNt\env\lib\site-packages\paho\mqtt\client.py", line 3591, in _thread_main    self.loop_forever(retry_first_connection=True)  File "C:\Users\mpatle\source\repos\GetliveSvanNt\env\lib\site-packages\paho\mqtt\client.py", line 1756, in loop_forever    rc = self._loop(timeout)  File "C:\Users\mpatle\source\repos\GetliveSvanNt\env\lib\site-packages\paho\mqtt\client.py", line 1164, in _loop    rc = self.loop_read()  File "C:\Users\mpatle\source\repos\GetliveSvanNt\env\lib\site-packages\paho\mqtt\client.py", line 1558, in loop_read    return self._loop_rc_handle(rc)  File "C:\Users\mpatle\source\repos\GetliveSvanNt\env\lib\site-packages\paho\mqtt\client.py", line 2350, in _loop_rc_handle    self._do_on_disconnect(rc, properties)  File "C:\Users\mpatle\source\repos\GetliveSvanNt\env\lib\site-packages\paho\mqtt\client.py", line 3475, in _do_on_disconnect    on_disconnect(self, self._userdata, rc)  File "C:\Users\mpatle\source\repos\GetliveSvanNt\env\lib\site-packages\azure\iot\device\common\mqtt_transport.py", line 209, in on_disconnect    logger.debug("".join(traceback.format_stack()))INFO:azure.iot.device.common.mqtt_transport:Forcing paho disconnect to prevent it from automatically reconnectingDEBUG:azure.iot.device.common.mqtt_transport:in paho thread.  nulling _threadDEBUG:azure.iot.device.common.mqtt_transport:Done forcing paho disconnectDEBUG:azure.iot.device.common.mqtt_transport:Failing all subscribes and unsubscribes outstandingDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_mqtt_disconnected in pipeline threadINFO:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage: _on_mqtt_disconnect called: The connection was lost.DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(DisconnectedEvent): State changes CONNECTED -> DISCONNECTED. Attempting to reconnectDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:PipelineRootStage: DisconnectedEvent received. Calling on_disconnected_handlerDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_disconnected in callback threadINFO:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage: Unexpected disconnect (no pending connection op)INFO:azure.iot.device.iothub.abstract_clients:Connection State - DisconnectedDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:PipelineRootStage: BackgroundExceptionEvent received. Calling on_background_exception_handlerINFO:azure.iot.device.iothub.abstract_clients:Cleared all pending method requests due to disconnectDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_background_exception in callback threadWARNING:azure.iot.device.common.handle_exceptions:Exception caught in background thread.  Unable to handle.WARNING:azure.iot.device.common.handle_exceptions:['azure.iot.device.common.transport_exceptions.ConnectionDroppedError: Unexpected disconnection\n']DEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting on_reconnect_timer_expired in pipeline threadDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage: Reconnect timer expired. State is ConnectionState.DISCONNECTED.DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage: Starting reconnectionDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage: State changes ConnectionState.DISCONNECTED -> CONNECTING. Sending new connect op down in reconnect attemptDEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(ConnectOperation): connectingDEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(ConnectOperation): Starting watchdogDEBUG:azure.iot.device.common.mqtt_transport:connecting to mqtt brokerINFO:azure.iot.device.common.mqtt_transport:Connect using port 8883 (TCP)DEBUG:paho:Sending CONNECT (u1, p1, wr0, wq0, wf0, c0, k60) client_id=b'SvanNet92810'DEBUG:azure.iot.device.common.mqtt_transport:_mqtt_client.connect returned rc=0DEBUG:paho:Received CONNACK (1, 0)INFO:azure.iot.device.common.mqtt_transport:connected with result code: 0DEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_mqtt_connected in pipeline threadDEBUG:paho:Sending PUBLISH (d1, q1, r0, m1), 'b'devices/SvanNet92810/messages/events/'', ... (25981 bytes)INFO:azure.iot.device.common.pipeline.pipeline_stages_mqtt:_on_mqtt_connected calledDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(ConnectedEvent): State changes CONNECTING -> CONNECTED. Connection establishedDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:PipelineRootStage: ConnectedEvent received. Calling on_connected_handlerDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_connected in callback threadDEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage: completing connect opINFO:azure.iot.device.iothub.abstract_clients:Connection State - ConnectedDEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(ConnectOperation): cancelling watchdogDEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:ConnectOperation: completing without errorDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(ConnectOperation): on_connect_complete error=None state=ConnectionState.CONNECTEDDEBUG:paho:Received PUBACK (Mid: 1)INFO:azure.iot.device.common.mqtt_transport:payload published for 1DEBUG:azure.iot.device.common.mqtt_transport:Response received for recognized MID: 1 - triggering callbackDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting on_complete in pipeline threadDEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(MQTTPublishOperation): PUBACK received. completing op.DEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:MQTTPublishOperation: completing without errorDEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:SendD2CMessageOperation: Worker op (MQTTPublishOperation) has been completedDEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:SendD2CMessageOperation: completing without errorDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting on_complete in callback threadDEBUG:azure.iot.device.common.evented_callback:Callback completed with result NoneINFO:azure.iot.device.iothub.sync_clients:Successfully sent message to HubINFO:azure.iot.device.iothub.sync_clients:Disconnecting from Hub...DEBUG:azure.iot.device.iothub.sync_clients:Executing initial disconnectDEBUG:azure.iot.device.iothub.pipeline.mqtt_pipeline:Starting DisconnectOperation on the pipelineDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting run_op in pipeline threadDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(DisconnectOperation): State changes CONNECTED -> DISCONNECTING. Sending op down.DEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(DisconnectOperation): disconnectingINFO:azure.iot.device.common.mqtt_transport:disconnecting MQTT clientDEBUG:paho:Sending DISCONNECTINFO:azure.iot.device.common.mqtt_transport:disconnected with result code: 0DEBUG:azure.iot.device.common.mqtt_transport:Failing all subscribes and unsubscribes outstandingDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_mqtt_disconnected in pipeline threadDEBUG:azure.iot.device.common.mqtt_transport:_mqtt_client.disconnect returned rc=0DEBUG:azure.iot.device.common.mqtt_transport:Cancelling all pending operationsINFO:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage: _on_mqtt_disconnect calledDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(DisconnectedEvent): State changes DISCONNECTING -> DISCONNECTED. Not attempting to reconnect (User-initiated disconnect)DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:PipelineRootStage: DisconnectedEvent received. Calling on_disconnected_handlerDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_disconnected in callback threadDEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage: Expected disconnect - completing pending disconnect opINFO:azure.iot.device.iothub.abstract_clients:Connection State - DisconnectedDEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:DisconnectOperation: completing without errorINFO:azure.iot.device.iothub.abstract_clients:Cleared all pending method requests due to disconnectDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting on_complete in callback threadDEBUG:azure.iot.device.common.evented_callback:Callback completed with result NoneDEBUG:azure.iot.device.iothub.sync_clients:Successfully executed initial disconnectDEBUG:azure.iot.device.iothub.sync_clients:Stopping handlers...DEBUG:azure.iot.device.iothub.sync_clients:Successfully stopped handlersDEBUG:azure.iot.device.iothub.sync_clients:Executing secondary disconnect...DEBUG:azure.iot.device.iothub.pipeline.mqtt_pipeline:Starting DisconnectOperation on the pipelineDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting run_op in pipeline threadDEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(DisconnectOperation): State is already DISCONNECTED. Completing operationDEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:DisconnectOperation: completing without errorDEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting on_complete in callback threadDEBUG:azure.iot.device.common.evented_callback:Callback completed with result NoneDEBUG:azure.iot.device.iothub.sync_clients:Successfully executed secondary disconnectINFO:azure.iot.device.iothub.sync_clients:Successfully disconnected from HubMessage sent to IoT Hub

I have tried immediately connecting and disconnecting the the device after sending telemetry message to the device, still getting same exception.

Code-

    try:        if not hasattr(self, '_device_client') or not self._device_client:            self._device_client = IoTHubDeviceClient.create_from_connection_string(connection_string)        if not self._device_client.connected:            self._device_client.connect()        self._device_client.send_message(message)        print("Message sent to IoT Hub")    except Exception as e:        print(f"An unexpected error occurred: {e}")    finally:        try:            if self._device_client and self._device_client.connected:                self._device_client.disconnect()        except Exception as disconnect_error:            print(f"Error while disconnecting from IoT Hub: {disconnect_error}")

I am getting errors immediately after the connect() is called-

if status == False:    try:            asyncio.run(device_instance.DPS_Device(device_key))             #client.connect()            Azure_instance.send_message(connection_string,message_payload)            time.sleep(5)            #client.connect()            #client.shutdown()            #if status == False:            device_instance.update_devicetwin(device_id,device_name, connection_string)    except Exception as e:            print(f"An error occurred: {e}")

Viewing all articles
Browse latest Browse all 23160

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>