@@ -224,83 +224,115 @@ def insert_event(self, event):
224
224
225
225
def send (self , event ):
226
226
with self ._lock :
227
- self .insert_event (event )
227
+ try :
228
+ self .insert_event (event )
229
+ except Exception as ex :
230
+ self .logger .error (f"Failed to send event: { ex } " )
231
+ self .logger .error (traceback .format_exc ())
228
232
229
233
def send_bulk (self , events ):
230
234
with self ._lock :
231
235
for event in events :
232
- self .insert_event (event )
236
+ try :
237
+ self .insert_event (event )
238
+ except Exception as ex :
239
+ self .logger .error (f"Failed to send event: { ex } " )
240
+ self .logger .error (traceback .format_exc ())
233
241
234
242
def get (self , event_type , num_events = 1 , wait = 0 ):
235
243
with self ._lock :
236
244
events = []
237
245
for i in range (num_events ):
238
- if event_type in self .events_index :
239
- for scheduled_priority in [EventPriority .High , EventPriority .Medium , EventPriority .Low ]:
240
- if (scheduled_priority in self .events_index [event_type ] and self .events_index [event_type ][scheduled_priority ]):
241
- event_id = self .events_index [event_type ][scheduled_priority ][0 ]
242
- event = self .events [event_id ]
243
- if event .scheduled_time <= time .time ():
244
- event_id = self .events_index [event_type ][scheduled_priority ].pop (0 )
245
- event = self .events [event_id ]
246
- del self .events [event_id ]
247
- self .events_ids [event .get_event_id ()].remove (event_id )
248
-
249
- if event ._event_type in self .accounts :
250
- self .accounts [event ._event_type ]['total_queued_events' ] -= 1
251
- self .accounts [event ._event_type ]['total_processed_events' ] += 1
252
-
253
- self .logger .debug ("Get event %s" % (event .to_json (strip = True )))
254
- events .append (event )
246
+ try :
247
+ if event_type in self .events_index :
248
+ for scheduled_priority in [EventPriority .High , EventPriority .Medium , EventPriority .Low ]:
249
+ if (scheduled_priority in self .events_index [event_type ] and self .events_index [event_type ][scheduled_priority ]):
250
+ event_id = self .events_index [event_type ][scheduled_priority ][0 ]
251
+ if event_id not in self .events :
252
+ self .events_index [event_type ][scheduled_priority ].pop (0 )
253
+ else :
254
+ event = self .events [event_id ]
255
+ if event .scheduled_time <= time .time ():
256
+ event_id = self .events_index [event_type ][scheduled_priority ].pop (0 )
257
+ event = self .events [event_id ]
258
+ del self .events [event_id ]
259
+ self .events_ids [event .get_event_id ()].remove (event_id )
260
+
261
+ if event ._event_type in self .accounts :
262
+ self .accounts [event ._event_type ]['total_queued_events' ] -= 1
263
+ self .accounts [event ._event_type ]['total_processed_events' ] += 1
264
+
265
+ self .logger .debug ("Get event %s" % (event .to_json (strip = True )))
266
+ events .append (event )
267
+ except Exception as ex :
268
+ self .logger .error (f"Failed to send event: { ex } " )
269
+ self .logger .error (traceback .format_exc ())
255
270
256
271
if not events :
257
- if event_type in self .accounts :
258
- if self .accounts [event_type ]['total_queued_events' ] == 0 :
259
- self .accounts [event_type ]['lack_events' ] = True
272
+ try :
273
+ if event_type in self .accounts :
274
+ if self .accounts [event_type ]['total_queued_events' ] == 0 :
275
+ self .accounts [event_type ]['lack_events' ] = True
276
+ except Exception as ex :
277
+ self .logger .error (f"Failed to send event: { ex } " )
278
+ self .logger .error (traceback .format_exc ())
279
+
260
280
return events
261
281
262
282
def send_report (self , event , status , start_time , end_time , source , result ):
263
- event_id = event .get_event_id ()
264
- event_ret_status = status
265
- event_name = event ._event_type .name
266
- if not event_ret_status and result :
267
- event_ret_status = result .get ("status" , None )
268
- if event_id not in self .report :
269
- self .report [event_id ] = {"status" : event_ret_status ,
270
- "total_files" : None ,
271
- "processed_files" : None ,
272
- "event_types" : {}}
273
- self .report [event_id ]['status' ] = event_ret_status
274
- self .report [event_id ]['event_types' ][event_name ] = {'start_time' : start_time ,
275
- 'end_time' : end_time ,
276
- 'source' : source ,
277
- 'status' : event_ret_status ,
278
- 'result' : result }
283
+ try :
284
+ event_id = event .get_event_id ()
285
+ event_ret_status = status
286
+ event_name = event ._event_type .name
287
+ if not event_ret_status and result :
288
+ event_ret_status = result .get ("status" , None )
289
+ if event_id not in self .report :
290
+ self .report [event_id ] = {"status" : event_ret_status ,
291
+ "total_files" : None ,
292
+ "processed_files" : None ,
293
+ "event_types" : {}}
294
+ self .report [event_id ]['status' ] = event_ret_status
295
+ self .report [event_id ]['event_types' ][event_name ] = {'start_time' : start_time ,
296
+ 'end_time' : end_time ,
297
+ 'source' : source ,
298
+ 'status' : event_ret_status ,
299
+ 'result' : result }
300
+ except Exception as ex :
301
+ self .logger .error (f"Failed to send event: { ex } " )
302
+ self .logger .error (traceback .format_exc ())
279
303
280
304
def clean_cache_info (self ):
281
305
with self ._lock :
282
- event_ids = list (self .events_ids .keys ())
283
- for event_id in event_ids :
284
- if not self .events_ids [event_id ]:
285
- del self .events_ids [event_id ]
286
-
287
- event_ids = list (self .report .keys ())
288
- for event_id in event_ids :
289
- event_types = list (self .report [event_id ]['event_types' ].keys ())
290
- for event_type in event_types :
291
- end_time = self .report [event_id ]['event_types' ][event_type ].get ('end_time' , None )
292
- if not end_time or end_time < time .time () - 86400 * 10 :
293
- del self .report [event_id ]['event_types' ][event_type ]
294
- if not self .report [event_id ]['event_types' ]:
295
- del self .report [event_id ]
306
+ try :
307
+ event_ids = list (self .events_ids .keys ())
308
+ for event_id in event_ids :
309
+ if not self .events_ids [event_id ]:
310
+ del self .events_ids [event_id ]
311
+
312
+ event_ids = list (self .report .keys ())
313
+ for event_id in event_ids :
314
+ event_types = list (self .report [event_id ]['event_types' ].keys ())
315
+ for event_type in event_types :
316
+ end_time = self .report [event_id ]['event_types' ][event_type ].get ('end_time' , None )
317
+ if not end_time or end_time < time .time () - 86400 * 10 :
318
+ del self .report [event_id ]['event_types' ][event_type ]
319
+ if not self .report [event_id ]['event_types' ]:
320
+ del self .report [event_id ]
321
+ except Exception as ex :
322
+ self .logger .error (f"Failed to send event: { ex } " )
323
+ self .logger .error (traceback .format_exc ())
296
324
297
325
def show_queued_events (self ):
298
- if self .show_queued_events_time is None or self .show_queued_events_time + self .show_queued_events_time_interval < time .time ():
299
- self .show_queued_events_time = time .time ()
300
- for event_type in self .events_index :
301
- self .logger .info ("Number of events has processed: %s: %s" % (event_type .name , self .accounts .get (event_type , {}).get ('total_processed_events' , None )))
302
- for prio in self .events_index [event_type ]:
303
- self .logger .info ("Number of queued events: %s %s: %s" % (event_type .name , prio .name , len (self .events_index [event_type ][prio ])))
326
+ try :
327
+ if self .show_queued_events_time is None or self .show_queued_events_time + self .show_queued_events_time_interval < time .time ():
328
+ self .show_queued_events_time = time .time ()
329
+ for event_type in self .events_index :
330
+ self .logger .info ("Number of events has processed: %s: %s" % (event_type .name , self .accounts .get (event_type , {}).get ('total_processed_events' , None )))
331
+ for prio in self .events_index [event_type ]:
332
+ self .logger .info ("Number of queued events: %s %s: %s" % (event_type .name , prio .name , len (self .events_index [event_type ][prio ])))
333
+ except Exception as ex :
334
+ self .logger .error (f"Failed to send event: { ex } " )
335
+ self .logger .error (traceback .format_exc ())
304
336
305
337
def coordinate (self ):
306
338
self .select_coordinator ()
0 commit comments