From 51c944bafe440482d57be94be2133c86fee54e26 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Wed, 15 Apr 2020 15:55:46 +0200 Subject: [PATCH] ref: Only send 100 sessions in one envelope --- sentry_sdk/client.py | 10 ++++++++-- sentry_sdk/sessions.py | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index c0fb8422d8..036fc48340 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -2,6 +2,7 @@ import uuid import random from datetime import datetime +from itertools import islice import socket from sentry_sdk._compat import string_types, text_type, iteritems @@ -99,10 +100,15 @@ def _init_impl(self): def _send_sessions(sessions): # type: (List[Any]) -> None transport = self.transport - if sessions and transport: + if not transport or not sessions: + return + sessions_iter = iter(sessions) + while True: envelope = Envelope() - for session in sessions: + for session in islice(sessions_iter, 100): envelope.add_session(session) + if not envelope.items: + break transport.capture_envelope(envelope) try: diff --git a/sentry_sdk/sessions.py b/sentry_sdk/sessions.py index f4f7137cc0..b8ef201e2a 100644 --- a/sentry_sdk/sessions.py +++ b/sentry_sdk/sessions.py @@ -170,6 +170,7 @@ def update( sid=None, # type: Optional[Union[str, uuid.UUID]] did=None, # type: Optional[str] timestamp=None, # type: Optional[datetime] + started=None, # type: Optional[datetime] duration=None, # type: Optional[float] status=None, # type: Optional[SessionStatus] release=None, # type: Optional[str] @@ -194,6 +195,8 @@ def update( if timestamp is None: timestamp = datetime.utcnow() self.timestamp = timestamp + if started is not None: + self.started = started if duration is not None: self.duration = duration if release is not None: