From 9b257e78bcec3eb901913b6fd7e102fef79d32be Mon Sep 17 00:00:00 2001 From: ALITTLESEEDX Date: Mon, 25 May 2026 22:09:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20Python=203.10=20?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E4=B8=8B=20asyncio.timeout=20=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=20AttributeError=20(#885)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xiaomusic/auth.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/xiaomusic/auth.py b/xiaomusic/auth.py index 8078fa1..530d664 100644 --- a/xiaomusic/auth.py +++ b/xiaomusic/auth.py @@ -53,12 +53,17 @@ class AuthManager: async def init_all_data(self, force_login=False): try: - async with asyncio.timeout(INIT_LOCK_TIMEOUT_SEC): - async with self._init_lock: - await self._init_all_data_impl(force_login) + await asyncio.wait_for( + self._init_all_data_with_lock(force_login), + timeout=INIT_LOCK_TIMEOUT_SEC, + ) except asyncio.TimeoutError: self.log.warning("init_all_data 超时,可能被其他调用持有锁") + async def _init_all_data_with_lock(self, force_login=False): + async with self._init_lock: + await self._init_all_data_impl(force_login) + async def _init_all_data_impl(self, force_login=False): self.mi_token_home = os.path.join(self.config.conf_path, ".mi.token") self.log.info(