From 24ac8766328beb11d2fae3c51ba177beb9e0c902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B6=B5=E6=9B=A6?= Date: Wed, 16 Oct 2024 12:42:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E5=8D=A1=E9=A1=BF=E9=97=AE=E9=A2=98=EF=BC=88=E8=B0=B7=E6=AD=8C?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=9C=B0=E5=9D=80=E6=97=A0=E6=B3=95=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xiaomusic/analytics.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/xiaomusic/analytics.py b/xiaomusic/analytics.py index 728c984..fb9b5c4 100644 --- a/xiaomusic/analytics.py +++ b/xiaomusic/analytics.py @@ -11,6 +11,7 @@ class Analytics: self.gtag = None self.current_date = None self.log = log + self.task = None self.init() def init(self): @@ -27,16 +28,19 @@ class Analytics: self.gtag = gtag self.log.info("analytics init ok") - async def run_with_timeout(self, func, *args, **kwargs): + async def run_with_cancel(self, func, *args, **kwargs): try: - return await asyncio.wait_for(func(*args, **kwargs), 3) - except asyncio.TimeoutError as e: - self.log.warning(f"analytics run_with_timeout failed {e}") + if self.task: + self.log.warning(f"analytics run_with_cancel old : {self.task}") + self.task.cancel() + self.task = asyncio.create_task(func(*args, **kwargs)) + except Exception as e: + self.log.warning(f"analytics run_with_cancel failed {e}") return None async def send_startup_event(self): try: - await self.run_with_timeout(self._send_startup_event) + await self.run_with_cancel(self._send_startup_event) except Exception as e: self.log.warning(f"analytics send_startup_event failed {e}") self.init() @@ -49,7 +53,7 @@ class Analytics: async def send_daily_event(self): try: - await self.run_with_timeout(self._send_daily_event) + await self.run_with_cancel(self._send_daily_event) except Exception as e: self.log.warning(f"analytics send_daily_event failed {e}") self.init() @@ -68,7 +72,7 @@ class Analytics: async def send_play_event(self, name, sec): try: - await self.run_with_timeout(self._send_play_event, name, sec) + await self.run_with_cancel(self._send_play_event, name, sec) except Exception as e: self.log.warning(f"analytics send_play_event failed {e}") self.init()