Skip to content

Commit 8bd8044

Browse files
authored
ref: Only send 100 sessions in one envelope (getsentry#669)
1 parent cd64657 commit 8bd8044

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

sentry_sdk/client.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import uuid
33
import random
44
from datetime import datetime
5+
from itertools import islice
56
import socket
67

78
from sentry_sdk._compat import string_types, text_type, iteritems
@@ -99,10 +100,15 @@ def _init_impl(self):
99100
def _send_sessions(sessions):
100101
# type: (List[Any]) -> None
101102
transport = self.transport
102-
if sessions and transport:
103+
if not transport or not sessions:
104+
return
105+
sessions_iter = iter(sessions)
106+
while True:
103107
envelope = Envelope()
104-
for session in sessions:
108+
for session in islice(sessions_iter, 100):
105109
envelope.add_session(session)
110+
if not envelope.items:
111+
break
106112
transport.capture_envelope(envelope)
107113

108114
try:

sentry_sdk/sessions.py

+3
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ def update(
170170
sid=None, # type: Optional[Union[str, uuid.UUID]]
171171
did=None, # type: Optional[str]
172172
timestamp=None, # type: Optional[datetime]
173+
started=None, # type: Optional[datetime]
173174
duration=None, # type: Optional[float]
174175
status=None, # type: Optional[SessionStatus]
175176
release=None, # type: Optional[str]
@@ -194,6 +195,8 @@ def update(
194195
if timestamp is None:
195196
timestamp = datetime.utcnow()
196197
self.timestamp = timestamp
198+
if started is not None:
199+
self.started = started
197200
if duration is not None:
198201
self.duration = duration
199202
if release is not None:

0 commit comments

Comments
 (0)