From c99e20ff61351f9fa9de3e171b8f660994f2d071 Mon Sep 17 00:00:00 2001 From: jingrow Date: Fri, 21 Nov 2025 08:50:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96jfile=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=EF=BC=9A=E5=B0=86=E6=B8=85=E7=90=86=E9=97=B4=E9=9A=94=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=8F=AF=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BF=9D=E7=95=99=E6=97=B6=E9=97=B4=E8=B0=83=E6=95=B4=E4=B8=BA?= =?UTF-8?q?15=E5=88=86=E9=92=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将清理间隔从硬编码3600秒改为可配置项cleanup_interval_seconds - 文件保留时间从1小时调整为15分钟(0.25小时) - 清理间隔同步调整为15分钟(900秒),保持与保留时间一致 - 优化存储空间使用,过期文件更及时清理 --- apps/jfile/app.py | 3 ++- apps/jfile/file_cleaner.py | 5 +++-- apps/jfile/settings.py | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/jfile/app.py b/apps/jfile/app.py index 052dd83..ca9ab8e 100644 --- a/apps/jfile/app.py +++ b/apps/jfile/app.py @@ -53,7 +53,8 @@ app.mount("/files", StaticFiles(directory="files"), name="files") # 注册文件定时清理任务 save_dir = "files" retention_hours = settings.file_retention_hours -cleaner = FileCleaner(save_dir, retention_hours) +cleanup_interval = settings.cleanup_interval_seconds +cleaner = FileCleaner(save_dir, retention_hours, cleanup_interval) @app.on_event("startup") async def startup_event(): diff --git a/apps/jfile/file_cleaner.py b/apps/jfile/file_cleaner.py index f366b38..292b5f7 100644 --- a/apps/jfile/file_cleaner.py +++ b/apps/jfile/file_cleaner.py @@ -3,9 +3,10 @@ import asyncio from datetime import datetime, timedelta class FileCleaner: - def __init__(self, target_dir, retention_hours): + def __init__(self, target_dir, retention_hours, cleanup_interval_seconds=3600): self.target_dir = target_dir self.retention_hours = retention_hours + self.cleanup_interval_seconds = cleanup_interval_seconds async def periodic_cleanup(self): while True: @@ -13,7 +14,7 @@ class FileCleaner: self.cleanup_old_files() except Exception as e: print(f"清理文件时出错: {str(e)}") - await asyncio.sleep(3600) + await asyncio.sleep(self.cleanup_interval_seconds) def cleanup_old_files(self): if not os.path.exists(self.target_dir): diff --git a/apps/jfile/settings.py b/apps/jfile/settings.py index e10a668..8dc54bf 100644 --- a/apps/jfile/settings.py +++ b/apps/jfile/settings.py @@ -11,7 +11,10 @@ class Settings(BaseSettings): download_url: str = "https://api.jingrow.com/files" # 文件保留时间(小时) - file_retention_hours: int = 1 + file_retention_hours: float = 0.25 # 15分钟 + + # 清理任务执行间隔(秒) + cleanup_interval_seconds: int = 900 # 15分钟 class Config: