@@ -68,7 +68,13 @@ def _connect(self) -> None:
6868 self .logger .info (f"Subscribed to topic: { self .topic .decode ('utf-8' ) if self .topic else 'all topics' } " )
6969 except zmq .ZMQError as e :
7070 self .logger .error (f"Failed to connect to ZeroMQ endpoint { self .endpoint } : { e } " )
71- raise
71+ # Clean up resources if partially initialized
72+ if self .socket :
73+ self .socket .close ()
74+ self .socket = None
75+ if self .context :
76+ self .context .term ()
77+ self .context = None
7278
7379 def _disconnect (self ) -> None :
7480 """
@@ -106,25 +112,23 @@ def _run(self) -> None:
106112 """
107113 The main run loop that listens for messages and writes them to file.
108114 """
109- self ._connect ()
110-
111115 try :
112116 with open (self .output_file , 'a' , encoding = 'utf-8' ) as f :
113117 self .logger .info (f"Writing events to file: { self .output_file } " )
114118
115119 while self .running :
116120 try :
117121 if self .socket is None :
118- self .logger .error ( "Socket is None, attempting to reconnect " )
122+ self .logger .info ( "Attempting to connect to ZeroMQ endpoint... " )
119123 self ._connect ()
120124 if self .socket is None :
125+ self .logger .error ("Failed to establish connection, will retry" )
121126 time .sleep (0.1 )
122127 continue
123128
124129 # Receive multipart message [topic, payload]
125130 msg_parts = self .socket .recv_multipart ()
126131 if len (msg_parts ) == 2 :
127- received_topic = msg_parts [0 ].decode ('utf-8' )
128132 payload = msgpack .unpackb (msg_parts [1 ], raw = False )
129133
130134 # Process and write the event to file
@@ -134,6 +138,12 @@ def _run(self) -> None:
134138 except zmq .Again :
135139 # Timeout occurred, continue the loop
136140 continue
141+ except zmq .ZMQError as e :
142+ self .logger .error (f"ZeroMQ error: { e } " )
143+ # Reset socket to trigger reconnection
144+ self .socket = None
145+ time .sleep (0.1 )
146+ continue
137147 except Exception as e :
138148 self .logger .error (f"Error processing message: { e } " )
139149 continue
0 commit comments