This commit is contained in:
lz_db
2025-12-05 13:25:26 +08:00
parent efbcb63cec
commit 64c993319a
8 changed files with 205 additions and 17 deletions

View File

@@ -6,6 +6,7 @@ import time
import json
from typing import Dict
import utils.helpers as helpers
import redis
from utils.redis_client import RedisClient
from config.settings import SYNC_CONFIG
@@ -15,6 +16,7 @@ from .account_sync import AccountSyncBatch
from utils.redis_batch_helper import RedisBatchHelper
from config.settings import COMPUTER_NAMES, COMPUTER_NAME_PATTERN
from typing import List, Dict, Any, Set, Optional
from config.settings import REDIS_CONFIG
class SyncManager:
"""同步管理器(完整批量版本)"""
@@ -62,7 +64,8 @@ class SyncManager:
async def start(self):
"""启动同步服务"""
logger.info(f"同步服务启动,间隔 {self.sync_interval}")
# await self.cp()
# return
while self.is_running:
try:
@@ -155,4 +158,62 @@ class SyncManager:
if hasattr(syncer, 'db_manager'):
syncer.db_manager.close()
logger.info("同步服务停止")
logger.info("同步服务停止")
async def cp(self):
"""把Redis 0库的资产数据复制到Redis 1库"""
# 创建到Redis 0库的连接
redis_0 = redis.Redis(
host=REDIS_CONFIG['host'], # 你的Redis主机
port=REDIS_CONFIG['port'], # 你的Redis端口
db=0, # 数据库0
password=None, # 如果有密码
decode_responses=True # 自动解码为字符串
)
# 创建到Redis 1库的连接
redis_1 = redis.Redis(
host=REDIS_CONFIG['host'],
port=REDIS_CONFIG['port'],
db=1, # 数据库1
password=None,
decode_responses=True
)
accounts = self.redis_client.get_accounts_from_redis()
print(f"{len(accounts)} 个账号")
all_kid = accounts.keys()
keys1 = redis_0.keys("Bybit_fin_*")
# print(f"找到 {len(keys1)} 个匹配的键")
keys2 = redis_0.keys("Metatrader_fin_*")
# print(f"找到 {len(keys2)} 个匹配的键")
all_keys = keys1 + keys2
print(f"{len(all_keys)} 个键")
for key in all_keys:
key_split = key.split("_")
k_id = key_split[-1]
if k_id not in all_kid:
continue
exchange_id = None
if key_split[0] == "Bybit":
exchange_id = "bybit"
elif key_split[0] == "Metatrader":
exchange_id = "mt5"
# data = redis_0.hget(key)
print(f"开始处理键 {key} 的数据")
data = redis_0.hgetall(key)
for k, v in data.items():
# print(f"{k}")
data_dict = json.loads(v)
data_dict['lz_amount'] = float(data_dict['lz_money'])
del data_dict['lz_money']
if data_dict['lz_type'] == 'lz_balance':
row_key = k
else:
row_key = f"fund_{k}"
# print(row_key)
redis_1.hset(f"{exchange_id}:balance:{data_dict['k_id']}",row_key,json.dumps(data_dict))
# print(f"键 {key} 的数据为 {data}")
redis_1.close()
redis_0.close()
print("复制完成")