From 1206f24fa97a9099f8edeb3a271e908806db976e Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 25 Aug 2025 13:11:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=93=E5=AD=98=E8=BF=AD?= =?UTF-8?q?=E4=BB=A3=E6=97=B6=E7=9A=84=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/cache.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/core/cache.py b/app/core/cache.py index 979d0e36..14ca33a7 100644 --- a/app/core/cache.py +++ b/app/core/cache.py @@ -474,7 +474,11 @@ class MemoryBackend(CacheBackend): if region_cache is None: yield from () return - for item in region_cache.items(): + # 使用锁保护迭代过程,避免在迭代时缓存被修改 + with lock: + # 创建快照避免并发修改问题 + items_snapshot = list(region_cache.items()) + for item in items_snapshot: yield item def close(self) -> None: @@ -603,7 +607,11 @@ class AsyncMemoryBackend(AsyncCacheBackend): region_cache = self.__get_region_cache(region) if region_cache is None: return - for item in region_cache.items(): + # 使用锁保护迭代过程,避免在迭代时缓存被修改 + with lock: + # 创建快照避免并发修改问题 + items_snapshot = list(region_cache.items()) + for item in items_snapshot: yield item async def close(self) -> None: