fix: 修复播放卡顿问题(谷歌统计地址无法访问的情况)
This commit is contained in:
parent
fcdb7bf035
commit
24ac876632
@ -11,6 +11,7 @@ class Analytics:
|
|||||||
self.gtag = None
|
self.gtag = None
|
||||||
self.current_date = None
|
self.current_date = None
|
||||||
self.log = log
|
self.log = log
|
||||||
|
self.task = None
|
||||||
self.init()
|
self.init()
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
@ -27,16 +28,19 @@ class Analytics:
|
|||||||
self.gtag = gtag
|
self.gtag = gtag
|
||||||
self.log.info("analytics init ok")
|
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:
|
try:
|
||||||
return await asyncio.wait_for(func(*args, **kwargs), 3)
|
if self.task:
|
||||||
except asyncio.TimeoutError as e:
|
self.log.warning(f"analytics run_with_cancel old : {self.task}")
|
||||||
self.log.warning(f"analytics run_with_timeout failed {e}")
|
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
|
return None
|
||||||
|
|
||||||
async def send_startup_event(self):
|
async def send_startup_event(self):
|
||||||
try:
|
try:
|
||||||
await self.run_with_timeout(self._send_startup_event)
|
await self.run_with_cancel(self._send_startup_event)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.warning(f"analytics send_startup_event failed {e}")
|
self.log.warning(f"analytics send_startup_event failed {e}")
|
||||||
self.init()
|
self.init()
|
||||||
@ -49,7 +53,7 @@ class Analytics:
|
|||||||
|
|
||||||
async def send_daily_event(self):
|
async def send_daily_event(self):
|
||||||
try:
|
try:
|
||||||
await self.run_with_timeout(self._send_daily_event)
|
await self.run_with_cancel(self._send_daily_event)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.warning(f"analytics send_daily_event failed {e}")
|
self.log.warning(f"analytics send_daily_event failed {e}")
|
||||||
self.init()
|
self.init()
|
||||||
@ -68,7 +72,7 @@ class Analytics:
|
|||||||
|
|
||||||
async def send_play_event(self, name, sec):
|
async def send_play_event(self, name, sec):
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
self.log.warning(f"analytics send_play_event failed {e}")
|
self.log.warning(f"analytics send_play_event failed {e}")
|
||||||
self.init()
|
self.init()
|
||||||
|
Loading…
Reference in New Issue
Block a user