From 4b3f04c73f3103814ff2e9c17c9ce511183de904 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 31 Dec 2024 12:42:28 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=9B=AE=E5=BD=95=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E6=8E=A7=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/chain/transfer.py | 7 ++----- app/monitor.py | 8 ++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) 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(