From 881f75590c89ce0a23f49caeee52eb6ea1ce7a5a Mon Sep 17 00:00:00 2001 From: aaron <> Date: Fri, 20 Feb 2026 22:06:48 +0800 Subject: [PATCH] update --- backend/app/services/price_monitor_service.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/backend/app/services/price_monitor_service.py b/backend/app/services/price_monitor_service.py index 056f38c..fc71918 100644 --- a/backend/app/services/price_monitor_service.py +++ b/backend/app/services/price_monitor_service.py @@ -15,8 +15,22 @@ class PriceMonitorService: # Binance API BASE_URL = "https://api.binance.com" + _instance = None + _initialized = False + + def __new__(cls): + """单例模式 - 确保只有一个实例""" + if cls._instance is None: + cls._instance = super().__new__(cls) + return cls._instance + def __init__(self): """初始化价格监控服务""" + # 防止重复初始化 + if PriceMonitorService._initialized: + return + + PriceMonitorService._initialized = True self.settings = get_settings() self.running = False self.subscribed_symbols: Set[str] = set() @@ -32,7 +46,7 @@ class PriceMonitorService: def start(self): """启动价格轮询""" if self.running: - logger.warning("价格监控服务已在运行") + logger.debug("价格监控服务已在运行") return self.running = True @@ -51,8 +65,10 @@ class PriceMonitorService: break time.sleep(0.1) - self._poll_thread = threading.Thread(target=_poll_loop, daemon=True) - self._poll_thread.start() + # 防止重复创建线程 + if self._poll_thread is None or not self._poll_thread.is_alive(): + self._poll_thread = threading.Thread(target=_poll_loop, daemon=True) + self._poll_thread.start() def stop(self): """停止价格轮询"""