Skip to content

Commit 0740977

Browse files
committed
Better error handling for Starlette Adapater
1 parent b7caa44 commit 0740977

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

twitchio/web/starlette_adapter.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ def __init__(
173173
on_shutdown=[self.event_shutdown],
174174
on_startup=[self.event_startup],
175175
)
176+
self._closing: bool = False
176177

177178
def __repr__(self) -> str:
178179
return f"StarletteAdapter(host={self._host}, port={self._port})"
@@ -194,6 +195,11 @@ async def event_shutdown(self) -> None:
194195
await self.close()
195196

196197
async def close(self) -> None:
198+
if self._closing:
199+
return
200+
201+
self._closing = True
202+
197203
if self._runner_task is not None:
198204
try:
199205
self._runner_task.cancel()
@@ -213,8 +219,14 @@ def _task_callback(self, task: asyncio.Task[None]) -> None:
213219
if not task.done():
214220
return
215221

216-
if e := task.exception():
217-
raise e
222+
try:
223+
if e := task.exception():
224+
raise e
225+
except asyncio.CancelledError as e:
226+
if e.__cause__:
227+
logger.exception(e.__cause__)
228+
elif e.__context__:
229+
logger.exception(e.__context__)
218230

219231
async def run(self, host: str | None = None, port: int | None = None) -> None:
220232
self._host = host or self._host

0 commit comments

Comments
 (0)