Source code for applicationinsights.channel.SynchronousQueue
from .QueueBase import QueueBase
[docs]class SynchronousQueue(QueueBase):
"""A synchronous queue for use in conjunction with the :class:`SynchronousSender`. The queue will call
:func:`send` on :func:`sender` when it reaches :func:`max_queue_length`, or when the consumer calls
:func:`flush`.
.. code:: python
from application_insights.channel import SynchronousQueue
queue = SynchronousQueue(None)
queue.max_queue_length = 1
queue.put(1)
"""
[docs] def flush(self):
"""Flushes the current queue by by calling :func:`sender`'s :func:`send` method.
"""
local_sender = self.sender
if not local_sender:
return
while True:
# get at most send_buffer_size items and send them
data = []
while len(data) < local_sender.send_buffer_size:
item = self.get()
if not item:
break
data.append(item)
if len(data) == 0:
break
local_sender.send(data)