Skip to content

Commit 57ea658

Browse files
committed
ref(client): Add event loop handling to client flush/close
Add event loop checks to client flush/close in async, in order to ensure silent failing instead of runtime error propagation/crashing. GH-4601
1 parent e5099ef commit 57ea658

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

sentry_sdk/client.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -941,9 +941,13 @@ def close( # type: ignore[override]
941941
def _on_flush_done(_: asyncio.Task[None]) -> None:
942942
self._close_components()
943943

944-
flush_task = self.transport.loop.create_task(
945-
self._flush_async(timeout, callback)
946-
)
944+
try:
945+
flush_task = self.transport.loop.create_task(
946+
self._flush_async(timeout, callback)
947+
)
948+
except RuntimeError:
949+
logger.warning("Event loop not running, aborting close.")
950+
return None
947951
# Enforce flush before shutdown
948952
flush_task.add_done_callback(_on_flush_done)
949953
return flush_task
@@ -975,9 +979,13 @@ def flush( # type: ignore[override]
975979
self.log_batcher.flush()
976980

977981
if isinstance(self.transport, AsyncHttpTransport):
978-
return self.transport.loop.create_task(
979-
self._flush_async(timeout, callback)
980-
)
982+
try:
983+
return self.transport.loop.create_task(
984+
self._flush_async(timeout, callback)
985+
)
986+
except RuntimeError:
987+
logger.warning("Event loop not running, aborting flush.")
988+
return None
981989
else:
982990
self.transport.flush(timeout=timeout, callback=callback)
983991
return None

0 commit comments

Comments
 (0)