mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
refactor: reorganize startup persistence boundaries
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
from app.chain.transfer import TransferChain
|
||||
|
||||
|
||||
def replay_pending_transfers():
|
||||
"""
|
||||
回放上次进程退出时仍未整理完的文件。
|
||||
|
||||
整理队列是纯内存的,挂载挂死后的人工重启、版本升级、OOM、宿主重启都会让
|
||||
队列连同「这些文件还没整理」这个事实一起蒸发;而已稳定落地的文件不会再产生
|
||||
任何监控事件,也不会有新的补偿扫描起点,结果就是永久漏件。
|
||||
回放本身在后台线程执行,不阻塞启动流程。
|
||||
"""
|
||||
TransferChain().replay_pending()
|
||||
|
||||
|
||||
async def stop_transfer_runtime(timeout_seconds: float = 30.0) -> bool:
|
||||
"""关闭已存在的整理后台 owner,且不在关停阶段创建新的整理链实例。
|
||||
|
||||
:param timeout_seconds: worker 与 pending 回放共享的最大等待秒数
|
||||
:return: 没有已创建实例或所有整理后台 owner 均已收敛时返回 True
|
||||
"""
|
||||
transfer_chain = TransferChain.get_existing_instance()
|
||||
if transfer_chain is None:
|
||||
return True
|
||||
return await transfer_chain.close(timeout_seconds=timeout_seconds)
|
||||
Reference in New Issue
Block a user