@@ -53,12 +53,13 @@ def __init__(
5353 self ._max_flush_time = max_flush_time
5454 self ._max_buffer_size = max_buffer_size
5555 self ._queued_data = None
56- self ._flush_lock = threading .Lock ()
56+ self ._queue_lock = threading .Lock ()
5757 self ._last_flush = timeit .default_timer ()
5858 self ._flush_timer = None
5959
6060 def queue (self , event_type , data , flush = False ):
61- self ._queue (self .queued_data , {event_type : data })
61+ with self ._queue_lock :
62+ self .queued_data .write ((self ._json_serializer ({event_type : data }) + "\n " ).encode ("utf-8" ))
6263 since_last_flush = timeit .default_timer () - self ._last_flush
6364 queue_size = self .queued_data_size
6465 if flush :
@@ -77,27 +78,26 @@ def queue(self, event_type, data, flush=False):
7778 )
7879 self .flush ()
7980 elif not self ._flush_timer :
80- with self ._flush_lock :
81+ with self ._queue_lock :
8182 self ._start_flush_timer ()
8283
83- def _queue (self , queue , data ):
84- queue .write ((self ._json_serializer (data ) + "\n " ).encode ("utf-8" ))
85-
8684 @property
8785 def queued_data (self ):
8886 if self ._queued_data is None :
8987 if self ._compress_level :
9088 self ._queued_data = gzip .GzipFile (fileobj = BytesIO (), mode = "w" , compresslevel = self ._compress_level )
9189 else :
9290 self ._queued_data = BytesIO ()
93- self ._queue ( self ._queued_data , {"metadata" : self ._metadata })
91+ self ._queued_data . write (( self ._json_serializer ( {"metadata" : self ._metadata }) + " \n " ). encode ( "utf-8" ) )
9492 return self ._queued_data
9593
9694 @property
9795 def queued_data_size (self ):
98- f = self .queued_data
99- # return size of the underlying BytesIO object if it is compressed
100- return f .fileobj .tell () if hasattr (f , "fileobj" ) else f .tell ()
96+ f = self ._queued_data
97+ if f :
98+ # return size of the underlying BytesIO object if it is compressed
99+ return f .fileobj .tell () if hasattr (f , "fileobj" ) else f .tell ()
100+ return 0
101101
102102 def flush (self , sync = False , start_flush_timer = True ):
103103 """
@@ -106,7 +106,7 @@ def flush(self, sync=False, start_flush_timer=True):
106106 :param start_flush_timer: set to True if the flush timer thread should be restarted at the end of the flush
107107 :return: None
108108 """
109- with self ._flush_lock :
109+ with self ._queue_lock :
110110 self ._stop_flush_timer ()
111111 queued_data , self ._queued_data = self ._queued_data , None
112112 if queued_data and not self .state .should_try ():
0 commit comments