Skip to content

Commit cc2166b

Browse files
committed
More adapter close down logic
1 parent f2ade07 commit cc2166b

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

twitchio/client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ async def set_adapter(self, adapter: BaseAdapter) -> None:
196196
if self._setup_called:
197197
await self._adapter.run()
198198

199+
self._adapter.client = self
200+
199201
@property
200202
def tokens(self) -> MappingProxyType[str, TokenMappingData]:
201203
"""Property which returns a read-only mapping of the tokens that are managed by the `Client`.

twitchio/web/starlette_adapter.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ def __init__(
174174
on_startup=[self.event_startup],
175175
)
176176
self._closing: bool = False
177+
self._server: uvicorn.Server | None = None
177178

178179
def __repr__(self) -> str:
179180
return f"StarletteAdapter(host={self._host}, port={self._port})"
@@ -215,7 +216,11 @@ async def close(self, with_client: bool = True) -> None:
215216
if with_client:
216217
await self.client.close()
217218

219+
if self._server:
220+
await self._server.shutdown()
221+
218222
logger.info("Successfully shutdown TwitchIO <%s>.", self.__class__.__qualname__)
223+
self._closing = False
219224

220225
def _task_callback(self, task: asyncio.Task[None]) -> None:
221226
if not task.done():
@@ -243,8 +248,10 @@ async def run(self, host: str | None = None, port: int | None = None) -> None:
243248
timeout_graceful_shutdown=3,
244249
)
245250

246-
server: uvicorn.Server = uvicorn.Server(config)
247-
self._runner_task = asyncio.create_task(server.serve(), name=f"twitchio-web-adapter:{self.__class__.__qualname__}")
251+
self._server = uvicorn.Server(config)
252+
self._runner_task = asyncio.create_task(
253+
self._server.serve(), name=f"twitchio-web-adapter:{self.__class__.__qualname__}"
254+
)
248255
self._runner_task.add_done_callback(self._task_callback)
249256

250257
async def eventsub_callback(self, request: Request) -> Response:

0 commit comments

Comments
 (0)