This commit is contained in:
aaron 2026-02-20 22:06:48 +08:00
parent 2eae5cdc5e
commit 881f75590c

View File

@ -15,8 +15,22 @@ class PriceMonitorService:
# Binance API # Binance API
BASE_URL = "https://api.binance.com" 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): def __init__(self):
"""初始化价格监控服务""" """初始化价格监控服务"""
# 防止重复初始化
if PriceMonitorService._initialized:
return
PriceMonitorService._initialized = True
self.settings = get_settings() self.settings = get_settings()
self.running = False self.running = False
self.subscribed_symbols: Set[str] = set() self.subscribed_symbols: Set[str] = set()
@ -32,7 +46,7 @@ class PriceMonitorService:
def start(self): def start(self):
"""启动价格轮询""" """启动价格轮询"""
if self.running: if self.running:
logger.warning("价格监控服务已在运行") logger.debug("价格监控服务已在运行")
return return
self.running = True self.running = True
@ -51,8 +65,10 @@ class PriceMonitorService:
break break
time.sleep(0.1) 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): def stop(self):
"""停止价格轮询""" """停止价格轮询"""