Skip to content

Commit 8fc3b11

Browse files
committed
Add additional running checks on Adapters
1 parent cc2166b commit 8fc3b11

File tree

4 files changed

+10
-1
lines changed

4 files changed

+10
-1
lines changed

twitchio/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ async def main() -> None:
492492
self.__waiter.clear()
493493
await self.login(token=token, load_tokens=load_tokens, save_tokens=save_tokens)
494494

495-
if with_adapter:
495+
if with_adapter and not self._adapter._running:
496496
await self._adapter.run()
497497

498498
# Dispatch ready event... May change places in the future.

twitchio/web/aio_adapter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ def __init__(
176176
self.router.add_route("POST", self._eventsub_path, self.eventsub_callback)
177177

178178
self._responded: deque[str] = deque(maxlen=5000)
179+
self._running: bool = False
179180

180181
def __init_subclass__(cls: type[AiohttpAdapter]) -> None:
181182
return
@@ -212,6 +213,7 @@ async def close(self, *args: Any, **kwargs: Any) -> None:
212213

213214
self._runner = None
214215
self._runner_task = None
216+
self._running = False
215217

216218
def _task_callback(self, task: asyncio.Task[None]) -> None:
217219
if not task.done():
@@ -221,6 +223,8 @@ def _task_callback(self, task: asyncio.Task[None]) -> None:
221223
raise e
222224

223225
async def run(self, host: str | None = None, port: int | None = None) -> None:
226+
self._running = True
227+
224228
self._runner = web.AppRunner(self, access_log=None, handle_signals=True)
225229
await self._runner.setup()
226230

twitchio/web/starlette_adapter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ def __init__(
175175
)
176176
self._closing: bool = False
177177
self._server: uvicorn.Server | None = None
178+
self._running: bool = False
178179

179180
def __repr__(self) -> str:
180181
return f"StarletteAdapter(host={self._host}, port={self._port})"
@@ -221,6 +222,7 @@ async def close(self, with_client: bool = True) -> None:
221222

222223
logger.info("Successfully shutdown TwitchIO <%s>.", self.__class__.__qualname__)
223224
self._closing = False
225+
self._running = False
224226

225227
def _task_callback(self, task: asyncio.Task[None]) -> None:
226228
if not task.done():
@@ -236,6 +238,8 @@ def _task_callback(self, task: asyncio.Task[None]) -> None:
236238
logger.exception(e.__context__)
237239

238240
async def run(self, host: str | None = None, port: int | None = None) -> None:
241+
self._running = True
242+
239243
self._host = host or self._host
240244
self._port = port or self._port
241245

twitchio/web/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ class BaseAdapter(abc.ABC):
8686
client: Client
8787
_runner_task: asyncio.Task[None] | None
8888
_eventsub_secret: str | None
89+
_running: bool
8990

9091
@abc.abstractmethod
9192
async def event_startup(self) -> None: ...

0 commit comments

Comments
 (0)