mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 23:47:41 +08:00
feat(scheduler): 下载失败冷却记录加入定时清理
新增 DATA_CLEANUP_DOWNLOAD_FAILURE_DAYS 配置项(默认 7 天), 在 _build_cleanup_plans 中增加 downloadfailure 清理计划, 调用已有的 DownloadFailure.delete_expired 删除冷却已过期的记录。
This commit is contained in:
@@ -194,6 +194,8 @@ class ConfigModel(BaseModel):
|
|||||||
DATA_CLEANUP_SITE_USERDATA_DAYS: int = 180
|
DATA_CLEANUP_SITE_USERDATA_DAYS: int = 180
|
||||||
# 整理历史表保留天数,0为不清理
|
# 整理历史表保留天数,0为不清理
|
||||||
DATA_CLEANUP_TRANSFER_HISTORY_DAYS: int = 365 * 3
|
DATA_CLEANUP_TRANSFER_HISTORY_DAYS: int = 365 * 3
|
||||||
|
# 下载失败冷却记录保留天数,0为不清理
|
||||||
|
DATA_CLEANUP_DOWNLOAD_FAILURE_DAYS: int = 7
|
||||||
|
|
||||||
# ==================== 缓存配置 ====================
|
# ==================== 缓存配置 ====================
|
||||||
# 缓存类型,支持 cachetools 和 redis,默认使用 cachetools
|
# 缓存类型,支持 cachetools 和 redis,默认使用 cachetools
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ from app.runtime.extensions.plugin_manager import PluginManager
|
|||||||
from app.db import SessionFactory
|
from app.db import SessionFactory
|
||||||
from app.db.oper.agenttask import AgentTaskOper
|
from app.db.oper.agenttask import AgentTaskOper
|
||||||
from app.db.models.downloadhistory import DownloadHistory, DownloadFiles
|
from app.db.models.downloadhistory import DownloadHistory, DownloadFiles
|
||||||
|
from app.db.models.downloadfailure import DownloadFailure
|
||||||
from app.db.models.message import Message as MessageModel
|
from app.db.models.message import Message as MessageModel
|
||||||
from app.db.models.siteuserdata import SiteUserData
|
from app.db.models.siteuserdata import SiteUserData
|
||||||
from app.db.models.transferhistory import TransferHistory
|
from app.db.models.transferhistory import TransferHistory
|
||||||
@@ -180,6 +181,9 @@ class SchedulerChain(ChainBase):
|
|||||||
transfer_history_days = self._normalize_retention_days(
|
transfer_history_days = self._normalize_retention_days(
|
||||||
settings.DATA_CLEANUP_TRANSFER_HISTORY_DAYS
|
settings.DATA_CLEANUP_TRANSFER_HISTORY_DAYS
|
||||||
)
|
)
|
||||||
|
download_failure_days = self._normalize_retention_days(
|
||||||
|
settings.DATA_CLEANUP_DOWNLOAD_FAILURE_DAYS
|
||||||
|
)
|
||||||
|
|
||||||
message_cutoff = (
|
message_cutoff = (
|
||||||
started_at - timedelta(days=message_days)
|
started_at - timedelta(days=message_days)
|
||||||
@@ -193,6 +197,9 @@ class SchedulerChain(ChainBase):
|
|||||||
transfer_history_cutoff = (
|
transfer_history_cutoff = (
|
||||||
started_at - timedelta(days=transfer_history_days)
|
started_at - timedelta(days=transfer_history_days)
|
||||||
).strftime("%Y-%m-%d")
|
).strftime("%Y-%m-%d")
|
||||||
|
download_failure_cutoff = (
|
||||||
|
started_at - timedelta(days=download_failure_days)
|
||||||
|
).strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
@@ -244,6 +251,16 @@ class SchedulerChain(ChainBase):
|
|||||||
limit=batch_size,
|
limit=batch_size,
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "downloadfailure",
|
||||||
|
"retention_days": download_failure_days,
|
||||||
|
"cutoff": download_failure_cutoff,
|
||||||
|
"handler": lambda db: DownloadFailure.delete_expired(
|
||||||
|
db=db,
|
||||||
|
before_time=download_failure_cutoff,
|
||||||
|
limit=batch_size,
|
||||||
|
),
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user