diff --git a/app/chain/transfer.py b/app/chain/transfer.py index aad427e0..01d3240d 100644 --- a/app/chain/transfer.py +++ b/app/chain/transfer.py @@ -364,11 +364,8 @@ class TransferChain(ChainBase, metaclass=Singleton): # 文件整理线程 _transfer_thread = None - # 队列等待时间(秒) - _queue_timeout = 5 - # 队列间隔时间(秒) - _transfer_interval = 10 + _transfer_interval = 15 def __init__(self): super().__init__() @@ -536,7 +533,7 @@ class TransferChain(ChainBase, metaclass=Singleton): while not global_vars.is_system_stopped: try: - item: TransferQueue = self._queue.get(timeout=self._queue_timeout) + item: TransferQueue = self._queue.get(block=False) if item: task = item.task if not task: diff --git a/app/monitor.py b/app/monitor.py index eabfbfca..ae0bc52c 100644 --- a/app/monitor.py +++ b/app/monitor.py @@ -6,6 +6,7 @@ from threading import Lock from typing import Any from apscheduler.schedulers.background import BackgroundScheduler +from cachetools import TTLCache from watchdog.events import FileSystemEventHandler, FileSystemMovedEvent, FileSystemEvent from watchdog.observers.polling import PollingObserver @@ -67,6 +68,9 @@ class Monitor(metaclass=Singleton): # 存储过照间隔(分钟) _snapshot_interval = 5 + # TTL缓存,10秒钟有效 + _cache = TTLCache(maxsize=1024, ttl=10) + def __init__(self): super().__init__() self.transferchain = TransferChain() @@ -215,6 +219,10 @@ class Monitor(metaclass=Singleton): """ # 全程加锁 with lock: + # TTL缓存控重 + if self._cache.get(str(event_path)): + return + self._cache[str(event_path)] = True try: # 开始整理 self.transferchain.do_transfer(