From 306ba90100f314fff67c38ca02cd33c917f406b1 Mon Sep 17 00:00:00 2001 From: axibayuit Date: Wed, 24 Dec 2025 01:31:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E8=AE=BE=E7=BD=AE=E4=B8=BA-1=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E6=B0=B8=E4=B8=8D=E8=87=AA=E5=8A=A8=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - file_cache.py: 清理任务检查 timeout=-1 时跳过删除 - admin.py: 后端验证允许 -1 值 - manage.html: 前端允许输入 -1,更新提示说明 - main.py: 启动时同步数据库缓存配置到 FileCache 实例 --- src/api/admin.py | 13 ++++++++----- src/main.py | 3 +++ src/services/file_cache.py | 4 ++++ static/manage.html | 6 +++--- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/api/admin.py b/src/api/admin.py index a57e682..6a70764 100644 --- a/src/api/admin.py +++ b/src/api/admin.py @@ -723,11 +723,13 @@ async def update_cache_timeout( ): """Update cache timeout""" try: - if request.timeout < 60: - raise HTTPException(status_code=400, detail="Cache timeout must be at least 60 seconds") + # Allow -1 for never delete, otherwise must be between 60-86400 + if request.timeout != -1: + if request.timeout < 60: + raise HTTPException(status_code=400, detail="Cache timeout must be at least 60 seconds or -1 for never delete") - if request.timeout > 86400: - raise HTTPException(status_code=400, detail="Cache timeout cannot exceed 24 hours (86400 seconds)") + if request.timeout > 86400: + raise HTTPException(status_code=400, detail="Cache timeout cannot exceed 24 hours (86400 seconds)") # Update in-memory config config.set_cache_timeout(request.timeout) @@ -739,9 +741,10 @@ async def update_cache_timeout( if generation_handler: generation_handler.file_cache.set_timeout(request.timeout) + timeout_msg = "never delete" if request.timeout == -1 else f"{request.timeout} seconds" return { "success": True, - "message": f"Cache timeout updated to {request.timeout} seconds", + "message": f"Cache timeout updated to {timeout_msg}", "timeout": request.timeout } except HTTPException: diff --git a/src/main.py b/src/main.py index 222d6aa..6bb62c0 100644 --- a/src/main.py +++ b/src/main.py @@ -120,6 +120,9 @@ async def startup_event(): config.set_cache_enabled(cache_config.cache_enabled) config.set_cache_timeout(cache_config.cache_timeout) config.set_cache_base_url(cache_config.cache_base_url or "") + + # Sync cache timeout to file cache instance + generation_handler.file_cache.set_timeout(cache_config.cache_timeout) # Load generation configuration from database generation_config = await db.get_generation_config() diff --git a/src/services/file_cache.py b/src/services/file_cache.py index edeb100..ea56fa4 100644 --- a/src/services/file_cache.py +++ b/src/services/file_cache.py @@ -62,6 +62,10 @@ class FileCache: async def _cleanup_expired_files(self): """Remove expired cache files""" try: + # Skip cleanup if timeout is -1 (never delete) + if self.default_timeout == -1: + return + current_time = time.time() removed_count = 0 diff --git a/static/manage.html b/static/manage.html index 1f61ffc..88ec4e8 100644 --- a/static/manage.html +++ b/static/manage.html @@ -242,8 +242,8 @@