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: