This commit is contained in:
7LZL
2025-12-02 22:05:54 +08:00
commit 7fa249a767
18 changed files with 1045 additions and 0 deletions

66
sync/manager.py Normal file
View File

@@ -0,0 +1,66 @@
import asyncio
from loguru import logger
from typing import List, Dict
import signal
import sys
from config.settings import SYNC_CONFIG
from .position_sync import PositionSync
from .order_sync import OrderSync
from .account_sync import AccountSync
class SyncManager:
"""同步管理器"""
def __init__(self):
self.is_running = True
self.sync_interval = SYNC_CONFIG['interval']
# 初始化同步器
self.syncers = []
if SYNC_CONFIG['enable_position_sync']:
self.syncers.append(PositionSync())
logger.info("启用持仓同步")
if SYNC_CONFIG['enable_order_sync']:
self.syncers.append(OrderSync())
logger.info("启用订单同步")
if SYNC_CONFIG['enable_account_sync']:
self.syncers.append(AccountSync())
logger.info("启用账户信息同步")
# 注册信号处理器
signal.signal(signal.SIGINT, self.signal_handler)
signal.signal(signal.SIGTERM, self.signal_handler)
def signal_handler(self, signum, frame):
"""信号处理器"""
logger.info(f"接收到信号 {signum},正在关闭...")
self.is_running = False
async def start(self):
"""启动同步服务"""
logger.info(f"同步服务启动,间隔 {self.sync_interval}")
while self.is_running:
try:
# 执行所有同步器
tasks = [syncer.sync() for syncer in self.syncers]
await asyncio.gather(*tasks, return_exceptions=True)
logger.debug(f"同步完成,等待 {self.sync_interval}")
await asyncio.sleep(self.sync_interval)
except asyncio.CancelledError:
logger.info("同步任务被取消")
break
except Exception as e:
logger.error(f"同步任务异常: {e}")
await asyncio.sleep(30) # 出错后等待30秒
async def stop(self):
"""停止同步服务"""
self.is_running = False
logger.info("同步服务停止")