Beispiel #1
0
 def send_session(self, project_id, payload, item_headers=None):
     envelope = Envelope()
     envelope.add_session(payload)
     if item_headers:
         item = envelope.items[0]
         item.headers = {**item.headers, **item_headers}
     self.send_envelope(project_id, envelope)
Beispiel #2
0
    def flush(self):
        # type: (...) -> None
        pending_sessions = self.pending_sessions
        self.pending_sessions = []

        with self._aggregate_lock:
            pending_aggregates = self.pending_aggregates
            self.pending_aggregates = {}

        envelope = Envelope()
        for session in pending_sessions:
            if len(envelope.items) == MAX_ENVELOPE_ITEMS:
                self.capture_func(envelope)
                envelope = Envelope()

            envelope.add_session(session)

        for (attrs, states) in pending_aggregates.items():
            if len(envelope.items) == MAX_ENVELOPE_ITEMS:
                self.capture_func(envelope)
                envelope = Envelope()

            envelope.add_sessions(make_aggregate_envelope(states, attrs))

        if len(envelope.items) > 0:
            self.capture_func(envelope)
Beispiel #3
0
 def _send_sessions(sessions):
     # type: (List[Any]) -> None
     transport = self.transport
     if sessions and transport:
         envelope = Envelope()
         for session in sessions:
             envelope.add_session(session)
         transport.capture_envelope(envelope)
Beispiel #4
0
def test_session():
    envelope = Envelope()

    expected = Session()
    envelope.add_session(expected)

    for item in envelope:
        if item.type == "session":
            assert item.payload.json == expected.to_json()
Beispiel #5
0
 def _send_sessions(sessions):
     # type: (List[Any]) -> None
     transport = self.transport
     if not transport or not sessions:
         return
     sessions_iter = iter(sessions)
     while True:
         envelope = Envelope()
         for session in islice(sessions_iter, 100):
             envelope.add_session(session)
         if not envelope.items:
             break
         transport.capture_envelope(envelope)
Beispiel #6
0
 def send_session(self, project_id, payload):
     envelope = Envelope()
     envelope.add_session(payload)
     self.send_envelope(project_id, envelope)