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)
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)
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)
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()
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)
def send_session(self, project_id, payload): envelope = Envelope() envelope.add_session(payload) self.send_envelope(project_id, envelope)