Add parallel subscription

This commit is contained in:
2024-11-17 22:25:32 +01:00
parent 3fc362e6ff
commit 5ae6816873

View File

@@ -1,4 +1,4 @@
from asyncio import sleep from asyncio import sleep, gather
import logging import logging
from typing import NoReturn, Literal from typing import NoReturn, Literal
@@ -43,6 +43,8 @@ class TwitchService:
await eventsub.listen_stream_online(str(streamer.twitch.id), self.on_stream_online) await eventsub.listen_stream_online(str(streamer.twitch.id), self.on_stream_online)
else: else:
raise ValueError("Unknown method") raise ValueError("Unknown method")
except ValueError as e:
raise e
except Exception as e: except Exception as e:
if retry > 0: if retry > 0:
await sleep(1) await sleep(1)
@@ -50,6 +52,14 @@ class TwitchService:
else: else:
raise e raise e
async def subscribe_to_streamer(self, eventsub: EventSubWebhook, streamer: StreamerConfig):
logger.info(f"Subscribe to events for {streamer.twitch.name}")
await gather(
self.subscribe_with_retry("listen_channel_update_v2", eventsub, streamer),
self.subscribe_with_retry("listen_stream_online", eventsub, streamer)
)
logger.info(f"Subscribe to events for {streamer.twitch.name} done")
async def run(self) -> NoReturn: async def run(self) -> NoReturn:
eventsub = EventSubWebhook( eventsub = EventSubWebhook(
callback_url=config.TWITCH_CALLBACK_URL, callback_url=config.TWITCH_CALLBACK_URL,
@@ -66,13 +76,9 @@ class TwitchService:
eventsub.start() eventsub.start()
logger.info("Subscribe to events...") logger.info("Subscribe to events...")
await gather(
for streamer in streamers: *[self.subscribe_to_streamer(eventsub, streamer) for streamer in streamers]
logger.info(f"Subscribe to events for {streamer.twitch.name}") )
await self.subscribe_with_retry("listen_channel_update_v2", eventsub, streamer)
await self.subscribe_with_retry("listen_stream_online", eventsub, streamer)
logger.info(f"Subscribe to events for {streamer.twitch.name} done")
logger.info("Twitch service started") logger.info("Twitch service started")
while True: while True: