diff --git a/.env b/.env index 7396ac0..0eaa0d9 100644 --- a/.env +++ b/.env @@ -1,15 +1,15 @@ # Redis配置 -REDIS_HOST=localhost +REDIS_HOST=10.0.4.6 REDIS_PORT=6379 REDIS_PASSWORD= -REDIS_DB=0 +REDIS_DB=1 # MySQL配置 -DB_HOST=localhost +DB_HOST=10.0.4.17 DB_PORT=3306 DB_USER=root -DB_PASSWORD=your_password -DB_DATABASE=exchange_monitor +DB_PASSWORD=lz_mysqlLZ +DB_DATABASE=lz_app_test DB_POOL_SIZE=10 DB_MAX_OVERFLOW=20 DB_POOL_RECYCLE=3600 @@ -19,7 +19,7 @@ SQLALCHEMY_ECHO=false SQLALCHEMY_ECHO_POOL=false # 同步配置 -SYNC_INTERVAL=60 +SYNC_INTERVAL=20 RECENT_DAYS=3 CHUNK_SIZE=1000 ENABLE_POSITION_SYNC=true @@ -33,7 +33,7 @@ LOG_RETENTION=7 days # 计算机名配置(支持多个) -COMPUTER_NAMES=lz_c01,lz_c02,lz_c03 +COMPUTER_NAMES=lz_c01,lz_c02 # 或者使用模式匹配 COMPUTER_NAME_PATTERN=^lz_c\d{2}$ diff --git a/config/__pycache__/__init__.cpython-311.pyc b/config/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..228de2c Binary files /dev/null and b/config/__pycache__/__init__.cpython-311.pyc differ diff --git a/config/__pycache__/database.cpython-311.pyc b/config/__pycache__/database.cpython-311.pyc new file mode 100644 index 0000000..b290ddc Binary files /dev/null and b/config/__pycache__/database.cpython-311.pyc differ diff --git a/config/__pycache__/settings.cpython-311.pyc b/config/__pycache__/settings.cpython-311.pyc new file mode 100644 index 0000000..ac6de9f Binary files /dev/null and b/config/__pycache__/settings.cpython-311.pyc differ diff --git a/logs/sync_2025-12-04.log b/logs/sync_2025-12-04.log new file mode 100644 index 0000000..e17d4c2 --- /dev/null +++ b/logs/sync_2025-12-04.log @@ -0,0 +1,2727 @@ +2025-12-04 08:29:25 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 08:29:25 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 08:29:25 | INFO | sync.manager:_get_computer_names:136 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:29:25 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 08:29:25 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:29:25 | INFO | sync.manager:__init__:38 - 启用持仓批量同步 +2025-12-04 08:29:25 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:29:25 | INFO | sync.manager:__init__:43 - 启用订单批量同步 +2025-12-04 08:29:25 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:29:25 | INFO | sync.manager:__init__:48 - 启用账户信息批量同步 +2025-12-04 08:29:25 | INFO | sync.manager:start:66 - 同步服务启动,间隔 60 秒 +2025-12-04 08:29:25 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:29:25 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:29:25 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:29:25 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:29:25 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:29:25 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:29:55 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:29:55 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:29:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:29:55 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:29:55 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:29:55 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:30:25 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:30:25 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:30:25 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:30:25 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:30:25 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:30:55 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:30:55 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:30:55 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:30:55 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:30:55 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:31:25 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:31:25 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:31:25 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:31:25 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:31:25 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:31:55 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:31:55 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:31:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:31:55 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:31:55 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:31:55 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:32:25 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:32:25 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:32:25 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:32:25 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:32:25 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:32:55 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:32:55 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:32:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:32:55 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:32:55 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:32:55 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:33:25 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:33:25 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:33:25 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:33:25 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:33:25 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:33:55 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:33:55 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:33:55 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:33:55 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:33:55 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:33:55 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:34:25 | WARNING | sync.manager:get_accounts_from_redis:120 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:34:25 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10143 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10145 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10112 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10146 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10106 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10113 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10114 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10122 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10124 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10130 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10132 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10137 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10139 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10141 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10107 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10115 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10123 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10125 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10131 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10138 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10140 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10142 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | ERROR | sync.manager:parse_account:332 - 处理账号 10144 数据异常: 'SyncManager' object has no attribute '_safe_int' +2025-12-04 08:34:25 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:34:25 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:34:25 | ERROR | sync.manager:get_accounts_from_redis:129 - 获取账户信息失败: 'SyncManager' object has no attribute 'sync_stats' +2025-12-04 08:34:25 | ERROR | sync.manager:start:103 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:34:40 | INFO | sync.manager:signal_handler:383 - 接收到信号 2,正在关闭... +2025-12-04 08:34:46 | INFO | sync.manager:signal_handler:383 - 接收到信号 2,正在关闭... +2025-12-04 08:34:55 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 08:35:57 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 08:35:57 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 08:35:57 | INFO | sync.manager:_get_computer_names:136 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:35:57 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 08:35:57 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:35:57 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 08:35:57 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:35:57 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 08:35:57 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:35:57 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 08:35:57 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 08:35:57 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10106 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10113 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10114 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10122 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10124 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10130 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10132 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10137 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10139 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10141 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10107 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10115 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10123 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10125 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10131 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10138 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10140 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10142 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10144 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10143 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10145 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10112 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10146 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:35:57 | WARNING | sync.manager:get_accounts_from_redis:121 - 配置的计算机名未找到数据,尝试自动发现... +2025-12-04 08:35:57 | INFO | sync.manager:_discover_all_accounts:247 - 自动发现 2 个策略API key +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10143 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10145 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10112 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10146 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 0 个账号 +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10106 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10113 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10114 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10122 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10124 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10130 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10132 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10137 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10139 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10141 缺少必要字段: st_id=0, exchange_id=bybit +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10107 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10115 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10123 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10125 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10131 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10138 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10140 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10142 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | WARNING | sync.manager:parse_account:323 - 账号 10144 缺少必要字段: st_id=0, exchange_id=mt5 +2025-12-04 08:35:57 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 0 个账号 +2025-12-04 08:35:57 | INFO | sync.manager:_discover_all_accounts:261 - 自动发现共获取到 0 个账号 +2025-12-04 08:35:57 | INFO | sync.manager:get_accounts_from_redis:124 - 从 3 个计算机名获取到 0 个账号 +2025-12-04 08:35:57 | ERROR | sync.manager:start:104 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:36:18 | INFO | sync.manager:signal_handler:383 - 接收到信号 2,正在关闭... +2025-12-04 08:36:27 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 08:39:03 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 08:39:03 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 08:39:03 | INFO | sync.manager:_get_computer_names:136 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:39:04 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 08:39:04 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:39:04 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 08:39:04 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:39:04 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 08:39:04 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:39:04 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 08:39:04 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 08:39:04 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 08:39:04 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:39:04 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 08:39:04 | INFO | sync.manager:_get_accounts_by_computer_name:154 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:39:04 | INFO | sync.manager:_get_accounts_by_computer_name:179 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 08:39:04 | INFO | sync.manager:get_accounts_from_redis:124 - 从 3 个计算机名获取到 23 个账号 +2025-12-04 08:39:04 | ERROR | sync.manager:start:104 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:39:24 | INFO | sync.manager:signal_handler:375 - 接收到信号 2,正在关闭... +2025-12-04 08:39:34 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 08:42:37 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 08:42:37 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 08:42:37 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:42:37 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 08:42:37 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:42:37 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 08:42:37 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:42:37 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 08:42:37 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:42:37 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 08:42:37 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 08:42:37 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 08:42:37 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:42:37 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 08:42:37 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:42:37 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 08:42:37 | INFO | sync.manager:get_accounts_from_redis:133 - 从 3 个计算机名获取到 23 个账号 +2025-12-04 08:42:37 | ERROR | sync.manager:start:104 - 同步任务异常: object dict can't be used in 'await' expression +2025-12-04 08:42:37 | ERROR | sync.manager:start:113 - 完整堆栈跟踪: +Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/sync/manager.py", line 73, in start + accounts = await self.get_accounts_from_redis() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: object dict can't be used in 'await' expression + +2025-12-04 08:42:49 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 08:43:07 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 08:43:45 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 08:43:45 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 08:43:45 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:43:45 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 08:43:45 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:43:45 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 08:43:45 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:43:45 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 08:43:45 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02', 'lz_c03'] +2025-12-04 08:43:45 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 08:43:45 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 08:43:45 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 08:43:45 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:43:45 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 08:43:45 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:43:45 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 08:43:45 | INFO | sync.manager:get_accounts_from_redis:133 - 从 3 个计算机名获取到 23 个账号 +2025-12-04 08:43:45 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 08:43:45 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.00秒 | 平均耗时: 0.00秒 +2025-12-04 08:43:45 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.00 秒,等待 60 秒 +2025-12-04 08:43:52 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 08:44:45 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 08:57:01 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 08:57:01 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 08:57:01 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 08:57:01 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 08:57:01 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 08:57:01 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 08:57:01 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 08:57:01 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 08:57:01 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 08:57:01 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 08:57:01 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 08:57:01 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 08:57:01 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:57:01 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 08:57:01 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 08:57:01 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 08:57:01 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 08:57:01 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 08:57:01 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.00秒 | 平均耗时: 0.00秒 +2025-12-04 08:57:01 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.00 秒,等待 60 秒 +2025-12-04 08:57:04 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 08:58:01 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:00:31 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:00:31 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:00:31 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:00:31 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 09:00:31 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:00:31 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:00:31 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:00:31 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:00:31 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:00:31 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:00:31 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:00:31 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:00:31 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:00:31 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:00:31 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:00:31 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:00:31 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:00:31 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:00:31 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.00秒 | 平均耗时: 0.00秒 +2025-12-04 09:00:31 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.00 秒,等待 60 秒 +2025-12-04 09:00:33 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:01:31 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:06:31 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:06:31 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:06:31 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:06:31 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 09:06:31 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:06:31 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:06:31 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:06:31 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:06:31 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:06:31 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:06:31 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:06:31 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:06:31 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:06:31 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:06:31 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:06:31 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:06:31 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:06:31 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:06:31 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.00秒 | 平均耗时: 0.00秒 +2025-12-04 09:06:31 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.00 秒,等待 60 秒 +2025-12-04 09:06:38 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:07:31 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:09:08 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:09:08 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:09:08 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:09:08 | INFO | utils.database_manager:_init_engine:59 - SQLAlchemy数据库引擎初始化成功 +2025-12-04 09:09:08 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:09:08 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:09:08 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:09:08 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:09:08 | INFO | sync.base_sync:_get_computer_names:33 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 09:09:08 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:09:08 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:09:08 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:09:08 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:09:08 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:09:08 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:09:08 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:09:08 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:09:08 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:09:08 | INFO | sync.position_sync:sync_batch:21 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 09:09:08 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 09:09:08 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 09:09:08 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.00秒 | 平均耗时: 0.00秒 +2025-12-04 09:09:08 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.00 秒,等待 60 秒 +2025-12-04 09:09:13 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:10:08 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:19:47 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:19:47 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:19:47 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:19:47 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:19:47 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:19:47 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:19:47 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:19:47 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:19:47 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:19:47 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:19:47 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:19:47 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:19:47 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:19:47 | INFO | sync.position_sync:sync_batch:21 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 09:19:47 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 09:19:47 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 09:19:47 | INFO | sync.position_sync:sync_batch:32 - 收集到 179 条持仓数据 +2025-12-04 09:19:47 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 09:19:47 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 09:19:50 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:20:47 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:32:43 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:32:43 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:32:43 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:32:43 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:32:43 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:32:43 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:32:43 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:32:43 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:32:43 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:32:43 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:32:43 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:32:43 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:32:43 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:32:43 | INFO | sync.position_sync:sync_batch:21 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 09:32:43 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 09:32:43 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 09:32:43 | INFO | sync.position_sync:sync_batch:32 - 收集到 179 条持仓数据 +2025-12-04 09:32:43 | INFO | sync.position_sync:_sync_positions_batch_to_db:145 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5531, 10106, 'USDT', 'XAUTUSDT', 4199.77486405, 38.0, 159591.4448339, -22.9848339, 12, 1764763596, NULL, NULL, 3190.62911687) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10106 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5531, 10106, 'USDT', 'XAUTUSDT', 4199.77486405, 38.0, 159591.4448339, -22.9848339, 12, 1764763596, NULL, NULL, 3190.62911687) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5534, 10113, 'USDT', 'XAUTUSDT', 4201.84400204, 18.0, 75633.19203668, -24.01203668, 10, 1764763691, NULL, NULL, 2546.72655728) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10113 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5534, 10113, 'USDT', 'XAUTUSDT', 4201.84400204, 18.0, 75633.19203668, -24.01203668, 10, 1764763691, NULL, NULL, 2546.72655728) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5535, 10114, 'USDT', 'XAUTUSDT', 4201.44167658, 30.0, 126043.25029752, -27.95029752, 10, 1764763694, NULL, NULL, 2769.87208456) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10114 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5535, 10114, 'USDT', 'XAUTUSDT', 4201.44167658, 30.0, 126043.25029752, -27.95029752, 10, 1764763694, NULL, NULL, 2769.87208456) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5539, 10122, 'USDT', 'XAUTUSDT', 4202.12636657, 9.0, 37819.13729915, -14.27729915, 10, 1764763697, NULL, NULL, 2611.70420829) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10122 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5539, 10122, 'USDT', 'XAUTUSDT', 4202.12636657, 9.0, 37819.13729915, -14.27729915, 10, 1764763697, NULL, NULL, 2611.70420829) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5540, 10124, 'USDT', 'XAUTUSDT', 4201.1854272, 9.0, 37810.66884478, -5.80884478, 10, 1764763700, NULL, NULL, 2444.68176292) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10124 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5540, 10124, 'USDT', 'XAUTUSDT', 4201.1854272, 9.0, 37810.66884478, -5.80884478, 10, 1764763700, NULL, NULL, 2444.68176292) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5543, 10130, 'USDT', 'XAUTUSDT', 4201.26117558, 30.0, 126037.83526751, -8.73526751, 10, 1764763704, NULL, NULL, 2665.56767424) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10130 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5543, 10130, 'USDT', 'XAUTUSDT', 4201.26117558, 30.0, 126037.83526751, -8.73526751, 10, 1764763704, NULL, NULL, 2665.56767424) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5544, 10132, 'USDT', 'BTCUSDT', 113334.3, 0.4, 45333.72, 8188.548, 20, 1764763696, NULL, NULL, 103636.83198471), (5544, 10132, 'USDT', 'BTC-5DEC25-91000-P-USDT', 567.5, 0.4, -220.9255788, 6.0744212, NULL, 1764763696, NULL, NULL, NULL), (5544, 10132, 'USDT', 'BTC-4DEC25-92000-C-USDT', 1635.0, 0.4, 564.29306909, -89.7069309, NULL, 1764763696, NULL, NULL, NULL) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10132 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5544, 10132, 'USDT', 'BTCUSDT', 113334.3, 0.4, 45333.72, 8188.548, 20, 1764763696, NULL, NULL, 103636.83198471), (5544, 10132, 'USDT', 'BTC-5DEC25-91000-P-USDT', 567.5, 0.4, -220.9255788, 6.0744212, NULL, 1764763696, NULL, NULL, NULL), (5544, 10132, 'USDT', 'BTC-4DEC25-92000-C-USDT', 1635.0, 0.4, 564.29306909, -89.7069309, NULL, 1764763696, NULL, NULL, NULL) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5547, 10137, 'USDT', 'XAUTUSDT', 4203.9434543, 36.0, 151341.96435478, -98.76435478, 10, 1764763709, NULL, NULL, 2831.05021328) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10137 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5547, 10137, 'USDT', 'XAUTUSDT', 4203.9434543, 36.0, 151341.96435478, -98.76435478, 10, 1764763709, NULL, NULL, 2831.05021328) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5548, 10139, 'USDT', 'XAUTUSDT', 4201.38628945, 6.0, 25208.31773672, -1.11773672, 10, 1764763712, NULL, NULL, 2299.96605152) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10139 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5548, 10139, 'USDT', 'XAUTUSDT', 4201.38628945, 6.0, 25208.31773672, -1.11773672, 10, 1764763712, NULL, NULL, 2299.96605152) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5549, 10141, 'USDT', 'XAUTUSDT', 4200.97520788, 3.0, 12602.92562363, 0.67437637, 10, 1764763715, NULL, NULL, 2597.31051071) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10141 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5549, 10141, 'USDT', 'XAUTUSDT', 4200.97520788, 3.0, 12602.92562363, 0.67437637, 10, 1764763715, NULL, NULL, 2597.31051071) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5531, 10107, 'USDT', 'XAUUSD+', 4219.78, 0.01, 4219.78, 11.51, 100, 1764763698, NULL, NULL, 4430.769), (5531, 10107, 'USDT', 'XAUUSD+', 4239.65, 0.01, 4239.65, 31.38, 100, 1764763698, NULL, NULL, 4451.6325), (5531, 10107, 'USDT', 'XAUUSD+', 4239.65, 0.01, 4239.65, 31.38, 100, 1764763698, NULL, NULL, 4451.6325), (5531, 10107, 'USDT', 'XAUUSD+', 4239.78, 0.01, 4239.78, 31.51, 100, 1764763698, NULL, NULL, 4451.769), (5531, 10107, 'USDT', 'XAUUSD+', 4239.76, 0.01, 4239.76, 31.49, 100, 1764763698, NULL, NULL, 4451.7480000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4238.89, 0.01, 4238.89, 30.62, 100, 1764763698, NULL, NULL, 4450.834500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4237.57, 0.01, 4237.57, 29.3, 100, 1764763698, NULL, NULL, 4449.4484999999995), (5531, 10107, 'USDT', 'XAUUSD+', 4237.55, 0.01, 4237.55, 29.28, 100, 1764763698, NULL, NULL, 4449.427500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4237.6, 0.01, 4237.6, 29.33, 100, 1764763698, NULL, NULL, 4449.4800000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4229.85, 0.01, 4229.85, 21.58, 100, 1764763698, NULL, NULL, 4441.342500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 24.51, 100, 1764763698, NULL, NULL, 4444.419), (5531, 10107, 'USDT', 'XAUUSD+', 4233.13, 0.01, 4233.13, 24.86, 100, 1764763698, NULL, NULL, 4444.7865), (5531, 10107, 'USDT', 'XAUUSD+', 4233.17, 0.01, 4233.17, 24.9, 100, 1764763698, NULL, NULL, 4444.8285000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 24.85, 100, 1764763698, NULL, NULL, 4444.776), (5531, 10107, 'USDT', 'XAUUSD+', 4233.46, 0.01, 4233.46, 25.19, 100, 1764763698, NULL, NULL, 4445.133), (5531, 10107, 'USDT', 'XAUUSD+', 4232.42, 0.01, 4232.42, 24.15, 100, 1764763698, NULL, NULL, 4444.041), (5531, 10107, 'USDT', 'XAUUSD+', 4232.72, 0.01, 4232.72, 24.45, 100, 1764763698, NULL, NULL, 4444.356000000001), (5531, 10107, 'USDT', 'XAUUSD+', 4232.93, 0.01, 4232.93, 24.66, 100, 1764763698, NULL, NULL, 4444.5765), (5531, 10107, 'USDT', 'XAUUSD+', 4232.91, 0.01, 4232.91, 24.64, 100, 1764763698, NULL, NULL, 4444.5555), (5531, 10107, 'USDT', 'XAUUSD+', 4232.86, 0.01, 4232.86, 24.59, 100, 1764763698, NULL, NULL, 4444.503), (5531, 10107, 'USDT', 'XAUUSD+', 4232.24, 0.01, 4232.24, 23.97, 100, 1764763698, NULL, NULL, 4443.852), (5531, 10107, 'USDT', 'XAUUSD+', 4231.4, 0.01, 4231.4, 23.13, 100, 1764763698, NULL, NULL, 4442.97), (5531, 10107, 'USDT', 'XAUUSD+', 4215.3, 0.01, 4215.3, 7.03, 100, 1764763698, NULL, NULL, 4426.0650000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4217.65, 0.01, 4217.65, 9.38, 100, 1764763698, NULL, NULL, 4428.5325), (5531, 10107, 'USDT', 'XAUUSD+', 4217.67, 0.01, 4217.67, 9.4, 100, 1764763698, NULL, NULL, 4428.5535), (5531, 10107, 'USDT', 'XAUUSD+', 4217.98, 0.01, 4217.98, 9.71, 100, 1764763698, NULL, NULL, 4428.879), (5531, 10107, 'USDT', 'XAUUSD+', 4217.81, 0.01, 4217.81, 9.54, 100, 1764763698, NULL, NULL, 4428.700500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4217.72, 0.01, 4217.72, 9.45, 100, 1764763698, NULL, NULL, 4428.606000000001), (5531, 10107, 'USDT', 'XAUUSD+', 4217.96, 0.01, 4217.96, 9.69, 100, 1764763698, NULL, NULL, 4428.858), (5531, 10107, 'USDT', 'XAUUSD+', 4189.43, 0.01, 4189.43, -18.84, 100, 1764763698, NULL, NULL, 4398.901500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4224.21, 0.01, 4224.21, 15.94, 100, 1764763698, NULL, NULL, 4435.4205), (5531, 10107, 'USDT', 'XAUUSD+', 4224.44, 0.01, 4224.44, 16.17, 100, 1764763698, NULL, NULL, 4435.661999999999), (5531, 10107, 'USDT', 'XAUUSD+', 4224.49, 0.01, 4224.49, 16.22, 100, 1764763698, NULL, NULL, 4435.7145), (5531, 10107, 'USDT', 'XAUUSD+', 4224.47, 0.01, 4224.47, 16.2, 100, 1764763698, NULL, NULL, 4435.6935), (5531, 10107, 'USDT', 'XAUUSD+', 4223.15, 0.01, 4223.15, 14.88, 100, 1764763698, NULL, NULL, 4434.3075), (5531, 10107, 'USDT', 'XAUUSD+', 4223.36, 0.01, 4223.36, 15.09, 100, 1764763698, NULL, NULL, 4434.528), (5531, 10107, 'USDT', 'XAUUSD+', 4223.57, 0.01, 4223.57, 15.3, 100, 1764763698, NULL, NULL, 4434.7485), (5531, 10107, 'USDT', 'XAUUSD+', 4222.75, 0.01, 4222.75, 14.48, 100, 1764763698, NULL, NULL, 4433.8875) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10107 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5531, 10107, 'USDT', 'XAUUSD+', 4219.78, 0.01, 4219.78, 11.51, 100, 1764763698, NULL, NULL, 4430.769), (5531, 10107, 'USDT', 'XAUUSD+', 4239.65, 0.01, 4239.65, 31.38, 100, 1764763698, NULL, NULL, 4451.6325), (5531, 10107, 'USDT', 'XAUUSD+', 4239.65, 0.01, 4239.65, 31.38, 100, 1764763698, NULL, NULL, 4451.6325), (5531, 10107, 'USDT', 'XAUUSD+', 4239.78, 0.01, 4239.78, 31.51, 100, 1764763698, NULL, NULL, 4451.769), (5531, 10107, 'USDT', 'XAUUSD+', 4239.76, 0.01, 4239.76, 31.49, 100, 1764763698, NULL, NULL, 4451.7480000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4238.89, 0.01, 4238.89, 30.62, 100, 1764763698, NULL, NULL, 4450.834500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4237.57, 0.01, 4237.57, 29.3, 100, 1764763698, NULL, NULL, 4449.4484999999995), (5531, 10107, 'USDT', 'XAUUSD+', 4237.55, 0.01, 4237.55, 29.28, 100, 1764763698, NULL, NULL, 4449.427500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4237.6, 0.01, 4237.6, 29.33, 100, 1764763698, NULL, NULL, 4449.4800000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4229.85, 0.01, 4229.85, 21.58, 100, 1764763698, NULL, NULL, 4441.342500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 24.51, 100, 1764763698, NULL, NULL, 4444.419), (5531, 10107, 'USDT', 'XAUUSD+', 4233.13, 0.01, 4233.13, 24.86, 100, 1764763698, NULL, NULL, 4444.7865), (5531, 10107, 'USDT', 'XAUUSD+', 4233.17, 0.01, 4233.17, 24.9, 100, 1764763698, NULL, NULL, 4444.8285000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 24.85, 100, 1764763698, NULL, NULL, 4444.776), (5531, 10107, 'USDT', 'XAUUSD+', 4233.46, 0.01, 4233.46, 25.19, 100, 1764763698, NULL, NULL, 4445.133), (5531, 10107, 'USDT', 'XAUUSD+', 4232.42, 0.01, 4232.42, 24.15, 100, 1764763698, NULL, NULL, 4444.041), (5531, 10107, 'USDT', 'XAUUSD+', 4232.72, 0.01, 4232.72, 24.45, 100, 1764763698, NULL, NULL, 4444.356000000001), (5531, 10107, 'USDT', 'XAUUSD+', 4232.93, 0.01, 4232.93, 24.66, 100, 1764763698, NULL, NULL, 4444.5765), (5531, 10107, 'USDT', 'XAUUSD+', 4232.91, 0.01, 4232.91, 24.64, 100, 1764763698, NULL, NULL, 4444.5555), (5531, 10107, 'USDT', 'XAUUSD+', 4232.86, 0.01, 4232.86, 24.59, 100, 1764763698, NULL, NULL, 4444.503), (5531, 10107, 'USDT', 'XAUUSD+', 4232.24, 0.01, 4232.24, 23.97, 100, 1764763698, NULL, NULL, 4443.852), (5531, 10107, 'USDT', 'XAUUSD+', 4231.4, 0.01, 4231.4, 23.13, 100, 1764763698, NULL, NULL, 4442.97), (5531, 10107, 'USDT', 'XAUUSD+', 4215.3, 0.01, 4215.3, 7.03, 100, 1764763698, NULL, NULL, 4426.0650000000005), (5531, 10107, 'USDT', 'XAUUSD+', 4217.65, 0.01, 4217.65, 9.38, 100, 1764763698, NULL, NULL, 4428.5325), (5531, 10107, 'USDT', 'XAUUSD+', 4217.67, 0.01, 4217.67, 9.4, 100, 1764763698, NULL, NULL, 4428.5535), (5531, 10107, 'USDT', 'XAUUSD+', 4217.98, 0.01, 4217.98, 9.71, 100, 1764763698, NULL, NULL, 4428.879), (5531, 10107, 'USDT', 'XAUUSD+', 4217.81, 0.01, 4217.81, 9.54, 100, 1764763698, NULL, NULL, 4428.700500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4217.72, 0.01, 4217.72, 9.45, 100, 1764763698, NULL, NULL, 4428.606000000001), (5531, 10107, 'USDT', 'XAUUSD+', 4217.96, 0.01, 4217.96, 9.69, 100, 1764763698, NULL, NULL, 4428.858), (5531, 10107, 'USDT', 'XAUUSD+', 4189.43, 0.01, 4189.43, -18.84, 100, 1764763698, NULL, NULL, 4398.901500000001), (5531, 10107, 'USDT', 'XAUUSD+', 4224.21, 0.01, 4224.21, 15.94, 100, 1764763698, NULL, NULL, 4435.4205), (5531, 10107, 'USDT', 'XAUUSD+', 4224.44, 0.01, 4224.44, 16.17, 100, 1764763698, NULL, NULL, 4435.661999999999), (5531, 10107, 'USDT', 'XAUUSD+', 4224.49, 0.01, 4224.49, 16.22, 100, 1764763698, NULL, NULL, 4435.7145), (5531, 10107, 'USDT', 'XAUUSD+', 4224.47, 0.01, 4224.47, 16.2, 100, 1764763698, NULL, NULL, 4435.6935), (5531, 10107, 'USDT', 'XAUUSD+', 4223.15, 0.01, 4223.15, 14.88, 100, 1764763698, NULL, NULL, 4434.3075), (5531, 10107, 'USDT', 'XAUUSD+', 4223.36, 0.01, 4223.36, 15.09, 100, 1764763698, NULL, NULL, 4434.528), (5531, 10107, 'USDT', 'XAUUSD+', 4223.57, 0.01, 4223.57, 15.3, 100, 1764763698, NULL, NULL, 4434.7485), (5531, 10107, 'USDT', 'XAUUSD+', 4222.75, 0.01, 4222.75, 14.48, 100, 1764763698, NULL, NULL, 4433.8875) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5535, 10115, 'USDT', 'XAUUSD+', 4220.02, 0.01, 4220.02, 11.75, 100, 1764763698, NULL, NULL, 4431.021000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4239.06, 0.01, 4239.06, 30.79, 100, 1764763698, NULL, NULL, 4451.013000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4239.6, 0.01, 4239.6, 31.33, 100, 1764763698, NULL, NULL, 4451.580000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4239.8, 0.01, 4239.8, 31.53, 100, 1764763698, NULL, NULL, 4451.79), (5535, 10115, 'USDT', 'XAUUSD+', 4239.76, 0.01, 4239.76, 31.49, 100, 1764763698, NULL, NULL, 4451.7480000000005), (5535, 10115, 'USDT', 'XAUUSD+', 4239.2, 0.01, 4239.2, 30.93, 100, 1764763698, NULL, NULL, 4451.16), (5535, 10115, 'USDT', 'XAUUSD+', 4237.57, 0.01, 4237.57, 29.3, 100, 1764763698, NULL, NULL, 4449.4484999999995), (5535, 10115, 'USDT', 'XAUUSD+', 4237.57, 0.01, 4237.57, 29.3, 100, 1764763698, NULL, NULL, 4449.4484999999995), (5535, 10115, 'USDT', 'XAUUSD+', 4237.56, 0.01, 4237.56, 29.29, 100, 1764763698, NULL, NULL, 4449.438000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4238.31, 0.01, 4238.31, 30.04, 100, 1764763698, NULL, NULL, 4450.2255000000005), (5535, 10115, 'USDT', 'XAUUSD+', 4229.55, 0.01, 4229.55, 21.28, 100, 1764763698, NULL, NULL, 4441.0275), (5535, 10115, 'USDT', 'XAUUSD+', 4232.44, 0.01, 4232.44, 24.17, 100, 1764763698, NULL, NULL, 4444.062), (5535, 10115, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 24.51, 100, 1764763698, NULL, NULL, 4444.419), (5535, 10115, 'USDT', 'XAUUSD+', 4233.1, 0.01, 4233.1, 24.83, 100, 1764763698, NULL, NULL, 4444.755000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 24.85, 100, 1764763698, NULL, NULL, 4444.776), (5535, 10115, 'USDT', 'XAUUSD+', 4232.42, 0.01, 4232.42, 24.15, 100, 1764763698, NULL, NULL, 4444.041), (5535, 10115, 'USDT', 'XAUUSD+', 4232.29, 0.01, 4232.29, 24.02, 100, 1764763698, NULL, NULL, 4443.904500000001), (5535, 10115, 'USDT', 'XAUUSD+', 4232.27, 0.01, 4232.27, 24.0, 100, 1764763698, NULL, NULL, 4443.883500000001), (5535, 10115, 'USDT', 'XAUUSD+', 4232.72, 0.01, 4232.72, 24.45, 100, 1764763698, NULL, NULL, 4444.356000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4206.17, 0.01, 4206.17, -2.1, 100, 1764763698, NULL, NULL, 4416.4785), (5535, 10115, 'USDT', 'XAUUSD+', 4217.33, 0.01, 4217.33, 9.06, 100, 1764763698, NULL, NULL, 4428.1965), (5535, 10115, 'USDT', 'XAUUSD+', 4216.5, 0.01, 4216.5, 8.23, 100, 1764763698, NULL, NULL, 4427.325), (5535, 10115, 'USDT', 'XAUUSD+', 4216.57, 0.01, 4216.57, 8.3, 100, 1764763698, NULL, NULL, 4427.3985), (5535, 10115, 'USDT', 'XAUUSD+', 4216.51, 0.01, 4216.51, 8.24, 100, 1764763698, NULL, NULL, 4427.3355), (5535, 10115, 'USDT', 'XAUUSD+', 4185.93, 0.01, 4185.93, -22.34, 100, 1764763698, NULL, NULL, 4395.226500000001), (5535, 10115, 'USDT', 'XAUUSD+', 4186.48, 0.01, 4186.48, -21.79, 100, 1764763698, NULL, NULL, 4395.804), (5535, 10115, 'USDT', 'XAUUSD+', 4186.12, 0.01, 4186.12, -22.15, 100, 1764763698, NULL, NULL, 4395.426), (5535, 10115, 'USDT', 'XAUUSD+', 4186.11, 0.01, 4186.11, -22.16, 100, 1764763698, NULL, NULL, 4395.4155), (5535, 10115, 'USDT', 'XAUUSD+', 4221.73, 0.01, 4221.73, 13.46, 100, 1764763698, NULL, NULL, 4432.8165), (5535, 10115, 'USDT', 'XAUUSD+', 4221.92, 0.01, 4221.92, 13.65, 100, 1764763698, NULL, NULL, 4433.0160000000005) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10115 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5535, 10115, 'USDT', 'XAUUSD+', 4220.02, 0.01, 4220.02, 11.75, 100, 1764763698, NULL, NULL, 4431.021000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4239.06, 0.01, 4239.06, 30.79, 100, 1764763698, NULL, NULL, 4451.013000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4239.6, 0.01, 4239.6, 31.33, 100, 1764763698, NULL, NULL, 4451.580000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4239.8, 0.01, 4239.8, 31.53, 100, 1764763698, NULL, NULL, 4451.79), (5535, 10115, 'USDT', 'XAUUSD+', 4239.76, 0.01, 4239.76, 31.49, 100, 1764763698, NULL, NULL, 4451.7480000000005), (5535, 10115, 'USDT', 'XAUUSD+', 4239.2, 0.01, 4239.2, 30.93, 100, 1764763698, NULL, NULL, 4451.16), (5535, 10115, 'USDT', 'XAUUSD+', 4237.57, 0.01, 4237.57, 29.3, 100, 1764763698, NULL, NULL, 4449.4484999999995), (5535, 10115, 'USDT', 'XAUUSD+', 4237.57, 0.01, 4237.57, 29.3, 100, 1764763698, NULL, NULL, 4449.4484999999995), (5535, 10115, 'USDT', 'XAUUSD+', 4237.56, 0.01, 4237.56, 29.29, 100, 1764763698, NULL, NULL, 4449.438000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4238.31, 0.01, 4238.31, 30.04, 100, 1764763698, NULL, NULL, 4450.2255000000005), (5535, 10115, 'USDT', 'XAUUSD+', 4229.55, 0.01, 4229.55, 21.28, 100, 1764763698, NULL, NULL, 4441.0275), (5535, 10115, 'USDT', 'XAUUSD+', 4232.44, 0.01, 4232.44, 24.17, 100, 1764763698, NULL, NULL, 4444.062), (5535, 10115, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 24.51, 100, 1764763698, NULL, NULL, 4444.419), (5535, 10115, 'USDT', 'XAUUSD+', 4233.1, 0.01, 4233.1, 24.83, 100, 1764763698, NULL, NULL, 4444.755000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 24.85, 100, 1764763698, NULL, NULL, 4444.776), (5535, 10115, 'USDT', 'XAUUSD+', 4232.42, 0.01, 4232.42, 24.15, 100, 1764763698, NULL, NULL, 4444.041), (5535, 10115, 'USDT', 'XAUUSD+', 4232.29, 0.01, 4232.29, 24.02, 100, 1764763698, NULL, NULL, 4443.904500000001), (5535, 10115, 'USDT', 'XAUUSD+', 4232.27, 0.01, 4232.27, 24.0, 100, 1764763698, NULL, NULL, 4443.883500000001), (5535, 10115, 'USDT', 'XAUUSD+', 4232.72, 0.01, 4232.72, 24.45, 100, 1764763698, NULL, NULL, 4444.356000000001), (5535, 10115, 'USDT', 'XAUUSD+', 4206.17, 0.01, 4206.17, -2.1, 100, 1764763698, NULL, NULL, 4416.4785), (5535, 10115, 'USDT', 'XAUUSD+', 4217.33, 0.01, 4217.33, 9.06, 100, 1764763698, NULL, NULL, 4428.1965), (5535, 10115, 'USDT', 'XAUUSD+', 4216.5, 0.01, 4216.5, 8.23, 100, 1764763698, NULL, NULL, 4427.325), (5535, 10115, 'USDT', 'XAUUSD+', 4216.57, 0.01, 4216.57, 8.3, 100, 1764763698, NULL, NULL, 4427.3985), (5535, 10115, 'USDT', 'XAUUSD+', 4216.51, 0.01, 4216.51, 8.24, 100, 1764763698, NULL, NULL, 4427.3355), (5535, 10115, 'USDT', 'XAUUSD+', 4185.93, 0.01, 4185.93, -22.34, 100, 1764763698, NULL, NULL, 4395.226500000001), (5535, 10115, 'USDT', 'XAUUSD+', 4186.48, 0.01, 4186.48, -21.79, 100, 1764763698, NULL, NULL, 4395.804), (5535, 10115, 'USDT', 'XAUUSD+', 4186.12, 0.01, 4186.12, -22.15, 100, 1764763698, NULL, NULL, 4395.426), (5535, 10115, 'USDT', 'XAUUSD+', 4186.11, 0.01, 4186.11, -22.16, 100, 1764763698, NULL, NULL, 4395.4155), (5535, 10115, 'USDT', 'XAUUSD+', 4221.73, 0.01, 4221.73, 13.46, 100, 1764763698, NULL, NULL, 4432.8165), (5535, 10115, 'USDT', 'XAUUSD+', 4221.92, 0.01, 4221.92, 13.65, 100, 1764763698, NULL, NULL, 4433.0160000000005) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5539, 10123, 'USDT', 'XAUUSD+', 4230.55, 0.01, 4230.55, 23.02, 100, 1764763678, NULL, NULL, 4442.0775), (5539, 10123, 'USDT', 'XAUUSD+', 4239.04, 0.01, 4239.04, 31.51, 100, 1764763678, NULL, NULL, 4450.992), (5539, 10123, 'USDT', 'XAUUSD+', 4239.64, 0.01, 4239.64, 32.11, 100, 1764763678, NULL, NULL, 4451.622), (5539, 10123, 'USDT', 'XAUUSD+', 4229.75, 0.01, 4229.75, 22.22, 100, 1764763678, NULL, NULL, 4441.2375), (5539, 10123, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 25.25, 100, 1764763678, NULL, NULL, 4444.419), (5539, 10123, 'USDT', 'XAUUSD+', 4205.63, 0.01, 4205.63, -1.9, 100, 1764763678, NULL, NULL, 4415.9115), (5539, 10123, 'USDT', 'XAUUSD+', 4221.56, 0.01, 4221.56, 14.03, 100, 1764763678, NULL, NULL, 4432.638000000001), (5539, 10123, 'USDT', 'XAUUSD+', 4221.92, 0.01, 4221.92, 14.39, 100, 1764763678, NULL, NULL, 4433.0160000000005), (5539, 10123, 'USDT', 'XAUUSD+', 4222.53, 0.01, 4222.53, 15.0, 100, 1764763678, NULL, NULL, 4433.6565) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10123 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5539, 10123, 'USDT', 'XAUUSD+', 4230.55, 0.01, 4230.55, 23.02, 100, 1764763678, NULL, NULL, 4442.0775), (5539, 10123, 'USDT', 'XAUUSD+', 4239.04, 0.01, 4239.04, 31.51, 100, 1764763678, NULL, NULL, 4450.992), (5539, 10123, 'USDT', 'XAUUSD+', 4239.64, 0.01, 4239.64, 32.11, 100, 1764763678, NULL, NULL, 4451.622), (5539, 10123, 'USDT', 'XAUUSD+', 4229.75, 0.01, 4229.75, 22.22, 100, 1764763678, NULL, NULL, 4441.2375), (5539, 10123, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 25.25, 100, 1764763678, NULL, NULL, 4444.419), (5539, 10123, 'USDT', 'XAUUSD+', 4205.63, 0.01, 4205.63, -1.9, 100, 1764763678, NULL, NULL, 4415.9115), (5539, 10123, 'USDT', 'XAUUSD+', 4221.56, 0.01, 4221.56, 14.03, 100, 1764763678, NULL, NULL, 4432.638000000001), (5539, 10123, 'USDT', 'XAUUSD+', 4221.92, 0.01, 4221.92, 14.39, 100, 1764763678, NULL, NULL, 4433.0160000000005), (5539, 10123, 'USDT', 'XAUUSD+', 4222.53, 0.01, 4222.53, 15.0, 100, 1764763678, NULL, NULL, 4433.6565) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5540, 10125, 'USDT', 'XAUUSD+', 4220.02, 0.01, 4220.02, 12.1, 100, 1764763686, NULL, NULL, 4431.021000000001), (5540, 10125, 'USDT', 'XAUUSD+', 4239.66, 0.01, 4239.66, 31.74, 100, 1764763686, NULL, NULL, 4451.643), (5540, 10125, 'USDT', 'XAUUSD+', 4239.8, 0.01, 4239.8, 31.88, 100, 1764763686, NULL, NULL, 4451.79), (5540, 10125, 'USDT', 'XAUUSD+', 4229.55, 0.01, 4229.55, 21.63, 100, 1764763686, NULL, NULL, 4441.0275), (5540, 10125, 'USDT', 'XAUUSD+', 4232.81, 0.01, 4232.81, 24.89, 100, 1764763686, NULL, NULL, 4444.450500000001), (5540, 10125, 'USDT', 'XAUUSD+', 4206.17, 0.01, 4206.17, -1.75, 100, 1764763686, NULL, NULL, 4416.4785), (5540, 10125, 'USDT', 'XAUUSD+', 4221.56, 0.01, 4221.56, 13.64, 100, 1764763686, NULL, NULL, 4432.638000000001), (5540, 10125, 'USDT', 'XAUUSD+', 4223.51, 0.01, 4223.51, 15.59, 100, 1764763686, NULL, NULL, 4434.6855000000005), (5540, 10125, 'USDT', 'XAUUSD+', 4223.71, 0.01, 4223.71, 15.79, 100, 1764763686, NULL, NULL, 4434.8955000000005) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10125 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5540, 10125, 'USDT', 'XAUUSD+', 4220.02, 0.01, 4220.02, 12.1, 100, 1764763686, NULL, NULL, 4431.021000000001), (5540, 10125, 'USDT', 'XAUUSD+', 4239.66, 0.01, 4239.66, 31.74, 100, 1764763686, NULL, NULL, 4451.643), (5540, 10125, 'USDT', 'XAUUSD+', 4239.8, 0.01, 4239.8, 31.88, 100, 1764763686, NULL, NULL, 4451.79), (5540, 10125, 'USDT', 'XAUUSD+', 4229.55, 0.01, 4229.55, 21.63, 100, 1764763686, NULL, NULL, 4441.0275), (5540, 10125, 'USDT', 'XAUUSD+', 4232.81, 0.01, 4232.81, 24.89, 100, 1764763686, NULL, NULL, 4444.450500000001), (5540, 10125, 'USDT', 'XAUUSD+', 4206.17, 0.01, 4206.17, -1.75, 100, 1764763686, NULL, NULL, 4416.4785), (5540, 10125, 'USDT', 'XAUUSD+', 4221.56, 0.01, 4221.56, 13.64, 100, 1764763686, NULL, NULL, 4432.638000000001), (5540, 10125, 'USDT', 'XAUUSD+', 4223.51, 0.01, 4223.51, 15.59, 100, 1764763686, NULL, NULL, 4434.6855000000005), (5540, 10125, 'USDT', 'XAUUSD+', 4223.71, 0.01, 4223.71, 15.79, 100, 1764763686, NULL, NULL, 4434.8955000000005) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5543, 10131, 'USDT', 'XAUUSD+', 4252.18, 0.01, 4252.18, 44.28, 100, 1764763687, NULL, NULL, 4464.789000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4251.59, 0.01, 4251.59, 43.69, 100, 1764763687, NULL, NULL, 4464.1695), (5543, 10131, 'USDT', 'XAUUSD+', 4252.64, 0.01, 4252.64, 44.74, 100, 1764763687, NULL, NULL, 4465.272000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4252.46, 0.01, 4252.46, 44.56, 100, 1764763687, NULL, NULL, 4465.0830000000005), (5543, 10131, 'USDT', 'XAUUSD+', 4252.4, 0.01, 4252.4, 44.5, 100, 1764763687, NULL, NULL, 4465.0199999999995), (5543, 10131, 'USDT', 'XAUUSD+', 4251.83, 0.01, 4251.83, 43.93, 100, 1764763687, NULL, NULL, 4464.4215), (5543, 10131, 'USDT', 'XAUUSD+', 4252.31, 0.01, 4252.31, 44.41, 100, 1764763687, NULL, NULL, 4464.9255), (5543, 10131, 'USDT', 'XAUUSD+', 4251.99, 0.01, 4251.99, 44.09, 100, 1764763687, NULL, NULL, 4464.5895), (5543, 10131, 'USDT', 'XAUUSD+', 4252.46, 0.01, 4252.46, 44.56, 100, 1764763687, NULL, NULL, 4465.0830000000005), (5543, 10131, 'USDT', 'XAUUSD+', 4235.22, 0.01, 4235.22, 27.32, 100, 1764763687, NULL, NULL, 4446.981000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4229.4, 0.01, 4229.4, 21.5, 100, 1764763687, NULL, NULL, 4440.87), (5543, 10131, 'USDT', 'XAUUSD+', 4232.63, 0.01, 4232.63, 24.73, 100, 1764763687, NULL, NULL, 4444.2615000000005), (5543, 10131, 'USDT', 'XAUUSD+', 4232.81, 0.01, 4232.81, 24.91, 100, 1764763687, NULL, NULL, 4444.450500000001), (5543, 10131, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 25.22, 100, 1764763687, NULL, NULL, 4444.776), (5543, 10131, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 25.22, 100, 1764763687, NULL, NULL, 4444.776), (5543, 10131, 'USDT', 'XAUUSD+', 4232.32, 0.01, 4232.32, 24.42, 100, 1764763687, NULL, NULL, 4443.936), (5543, 10131, 'USDT', 'XAUUSD+', 4231.73, 0.01, 4231.73, 23.83, 100, 1764763687, NULL, NULL, 4443.3165), (5543, 10131, 'USDT', 'XAUUSD+', 4232.38, 0.01, 4232.38, 24.48, 100, 1764763687, NULL, NULL, 4443.999000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4232.95, 0.01, 4232.95, 25.05, 100, 1764763687, NULL, NULL, 4444.5975), (5543, 10131, 'USDT', 'XAUUSD+', 4204.03, 0.01, 4204.03, -3.87, 100, 1764763687, NULL, NULL, 4414.2315), (5543, 10131, 'USDT', 'XAUUSD+', 4217.32, 0.01, 4217.32, 9.42, 100, 1764763687, NULL, NULL, 4428.186), (5543, 10131, 'USDT', 'XAUUSD+', 4216.4, 0.01, 4216.4, 8.5, 100, 1764763687, NULL, NULL, 4427.22), (5543, 10131, 'USDT', 'XAUUSD+', 4216.4, 0.01, 4216.4, 8.5, 100, 1764763687, NULL, NULL, 4427.22), (5543, 10131, 'USDT', 'XAUUSD+', 4216.46, 0.01, 4216.46, 8.56, 100, 1764763687, NULL, NULL, 4427.283), (5543, 10131, 'USDT', 'XAUUSD+', 4216.48, 0.01, 4216.48, 8.58, 100, 1764763687, NULL, NULL, 4427.304), (5543, 10131, 'USDT', 'XAUUSD+', 4216.49, 0.01, 4216.49, 8.59, 100, 1764763687, NULL, NULL, 4427.3145), (5543, 10131, 'USDT', 'XAUUSD+', 4184.71, 0.01, 4184.71, -23.19, 100, 1764763687, NULL, NULL, 4393.9455), (5543, 10131, 'USDT', 'XAUUSD+', 4185.93, 0.01, 4185.93, -21.97, 100, 1764763687, NULL, NULL, 4395.226500000001), (5543, 10131, 'USDT', 'XAUUSD+', 4186.48, 0.01, 4186.48, -21.42, 100, 1764763687, NULL, NULL, 4395.804), (5543, 10131, 'USDT', 'XAUUSD+', 4221.73, 0.01, 4221.73, 13.83, 100, 1764763687, NULL, NULL, 4432.8165) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10131 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5543, 10131, 'USDT', 'XAUUSD+', 4252.18, 0.01, 4252.18, 44.28, 100, 1764763687, NULL, NULL, 4464.789000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4251.59, 0.01, 4251.59, 43.69, 100, 1764763687, NULL, NULL, 4464.1695), (5543, 10131, 'USDT', 'XAUUSD+', 4252.64, 0.01, 4252.64, 44.74, 100, 1764763687, NULL, NULL, 4465.272000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4252.46, 0.01, 4252.46, 44.56, 100, 1764763687, NULL, NULL, 4465.0830000000005), (5543, 10131, 'USDT', 'XAUUSD+', 4252.4, 0.01, 4252.4, 44.5, 100, 1764763687, NULL, NULL, 4465.0199999999995), (5543, 10131, 'USDT', 'XAUUSD+', 4251.83, 0.01, 4251.83, 43.93, 100, 1764763687, NULL, NULL, 4464.4215), (5543, 10131, 'USDT', 'XAUUSD+', 4252.31, 0.01, 4252.31, 44.41, 100, 1764763687, NULL, NULL, 4464.9255), (5543, 10131, 'USDT', 'XAUUSD+', 4251.99, 0.01, 4251.99, 44.09, 100, 1764763687, NULL, NULL, 4464.5895), (5543, 10131, 'USDT', 'XAUUSD+', 4252.46, 0.01, 4252.46, 44.56, 100, 1764763687, NULL, NULL, 4465.0830000000005), (5543, 10131, 'USDT', 'XAUUSD+', 4235.22, 0.01, 4235.22, 27.32, 100, 1764763687, NULL, NULL, 4446.981000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4229.4, 0.01, 4229.4, 21.5, 100, 1764763687, NULL, NULL, 4440.87), (5543, 10131, 'USDT', 'XAUUSD+', 4232.63, 0.01, 4232.63, 24.73, 100, 1764763687, NULL, NULL, 4444.2615000000005), (5543, 10131, 'USDT', 'XAUUSD+', 4232.81, 0.01, 4232.81, 24.91, 100, 1764763687, NULL, NULL, 4444.450500000001), (5543, 10131, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 25.22, 100, 1764763687, NULL, NULL, 4444.776), (5543, 10131, 'USDT', 'XAUUSD+', 4233.12, 0.01, 4233.12, 25.22, 100, 1764763687, NULL, NULL, 4444.776), (5543, 10131, 'USDT', 'XAUUSD+', 4232.32, 0.01, 4232.32, 24.42, 100, 1764763687, NULL, NULL, 4443.936), (5543, 10131, 'USDT', 'XAUUSD+', 4231.73, 0.01, 4231.73, 23.83, 100, 1764763687, NULL, NULL, 4443.3165), (5543, 10131, 'USDT', 'XAUUSD+', 4232.38, 0.01, 4232.38, 24.48, 100, 1764763687, NULL, NULL, 4443.999000000001), (5543, 10131, 'USDT', 'XAUUSD+', 4232.95, 0.01, 4232.95, 25.05, 100, 1764763687, NULL, NULL, 4444.5975), (5543, 10131, 'USDT', 'XAUUSD+', 4204.03, 0.01, 4204.03, -3.87, 100, 1764763687, NULL, NULL, 4414.2315), (5543, 10131, 'USDT', 'XAUUSD+', 4217.32, 0.01, 4217.32, 9.42, 100, 1764763687, NULL, NULL, 4428.186), (5543, 10131, 'USDT', 'XAUUSD+', 4216.4, 0.01, 4216.4, 8.5, 100, 1764763687, NULL, NULL, 4427.22), (5543, 10131, 'USDT', 'XAUUSD+', 4216.4, 0.01, 4216.4, 8.5, 100, 1764763687, NULL, NULL, 4427.22), (5543, 10131, 'USDT', 'XAUUSD+', 4216.46, 0.01, 4216.46, 8.56, 100, 1764763687, NULL, NULL, 4427.283), (5543, 10131, 'USDT', 'XAUUSD+', 4216.48, 0.01, 4216.48, 8.58, 100, 1764763687, NULL, NULL, 4427.304), (5543, 10131, 'USDT', 'XAUUSD+', 4216.49, 0.01, 4216.49, 8.59, 100, 1764763687, NULL, NULL, 4427.3145), (5543, 10131, 'USDT', 'XAUUSD+', 4184.71, 0.01, 4184.71, -23.19, 100, 1764763687, NULL, NULL, 4393.9455), (5543, 10131, 'USDT', 'XAUUSD+', 4185.93, 0.01, 4185.93, -21.97, 100, 1764763687, NULL, NULL, 4395.226500000001), (5543, 10131, 'USDT', 'XAUUSD+', 4186.48, 0.01, 4186.48, -21.42, 100, 1764763687, NULL, NULL, 4395.804), (5543, 10131, 'USDT', 'XAUUSD+', 4221.73, 0.01, 4221.73, 13.83, 100, 1764763687, NULL, NULL, 4432.8165) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5547, 10138, 'USDT', 'XAUUSD+', 4252.98, 0.01, 4252.98, 44.69, 100, 1764763697, NULL, NULL, 4465.629), (5547, 10138, 'USDT', 'XAUUSD+', 4251.6, 0.01, 4251.6, 43.31, 100, 1764763697, NULL, NULL, 4464.18), (5547, 10138, 'USDT', 'XAUUSD+', 4252.58, 0.01, 4252.58, 44.29, 100, 1764763697, NULL, NULL, 4465.209), (5547, 10138, 'USDT', 'XAUUSD+', 4252.44, 0.01, 4252.44, 44.15, 100, 1764763697, NULL, NULL, 4465.062), (5547, 10138, 'USDT', 'XAUUSD+', 4251.83, 0.01, 4251.83, 43.54, 100, 1764763697, NULL, NULL, 4464.4215), (5547, 10138, 'USDT', 'XAUUSD+', 4251.99, 0.01, 4251.99, 43.7, 100, 1764763697, NULL, NULL, 4464.5895), (5547, 10138, 'USDT', 'XAUUSD+', 4252.99, 0.01, 4252.99, 44.7, 100, 1764763697, NULL, NULL, 4465.6395), (5547, 10138, 'USDT', 'XAUUSD+', 4252.46, 0.01, 4252.46, 44.17, 100, 1764763697, NULL, NULL, 4465.0830000000005), (5547, 10138, 'USDT', 'XAUUSD+', 4253.18, 0.01, 4253.18, 44.89, 100, 1764763697, NULL, NULL, 4465.839000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4241.25, 0.01, 4241.25, 32.96, 100, 1764763697, NULL, NULL, 4453.3125), (5547, 10138, 'USDT', 'XAUUSD+', 4241.24, 0.01, 4241.24, 32.95, 100, 1764763697, NULL, NULL, 4453.302), (5547, 10138, 'USDT', 'XAUUSD+', 4238.61, 0.01, 4238.61, 30.32, 100, 1764763697, NULL, NULL, 4450.5405), (5547, 10138, 'USDT', 'XAUUSD+', 4229.75, 0.01, 4229.75, 21.46, 100, 1764763697, NULL, NULL, 4441.2375), (5547, 10138, 'USDT', 'XAUUSD+', 4232.45, 0.01, 4232.45, 24.16, 100, 1764763697, NULL, NULL, 4444.0725), (5547, 10138, 'USDT', 'XAUUSD+', 4232.3, 0.01, 4232.3, 24.01, 100, 1764763697, NULL, NULL, 4443.915), (5547, 10138, 'USDT', 'XAUUSD+', 4232.25, 0.01, 4232.25, 23.96, 100, 1764763697, NULL, NULL, 4443.8625), (5547, 10138, 'USDT', 'XAUUSD+', 4232.38, 0.01, 4232.38, 24.09, 100, 1764763697, NULL, NULL, 4443.999000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4232.38, 0.01, 4232.38, 24.09, 100, 1764763697, NULL, NULL, 4443.999000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4232.72, 0.01, 4232.72, 24.43, 100, 1764763697, NULL, NULL, 4444.356000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4232.93, 0.01, 4232.93, 24.64, 100, 1764763697, NULL, NULL, 4444.5765), (5547, 10138, 'USDT', 'XAUUSD+', 4231.73, 0.01, 4231.73, 23.44, 100, 1764763697, NULL, NULL, 4443.3165), (5547, 10138, 'USDT', 'XAUUSD+', 4227.03, 0.01, 4227.03, 18.74, 100, 1764763697, NULL, NULL, 4438.3814999999995), (5547, 10138, 'USDT', 'XAUUSD+', 4205.62, 0.01, 4205.62, -2.67, 100, 1764763697, NULL, NULL, 4415.901), (5547, 10138, 'USDT', 'XAUUSD+', 4204.95, 0.01, 4204.95, -3.34, 100, 1764763697, NULL, NULL, 4415.1975), (5547, 10138, 'USDT', 'XAUUSD+', 4217.32, 0.01, 4217.32, 9.03, 100, 1764763697, NULL, NULL, 4428.186), (5547, 10138, 'USDT', 'XAUUSD+', 4216.35, 0.01, 4216.35, 8.06, 100, 1764763697, NULL, NULL, 4427.1675000000005), (5547, 10138, 'USDT', 'XAUUSD+', 4216.36, 0.01, 4216.36, 8.07, 100, 1764763697, NULL, NULL, 4427.178), (5547, 10138, 'USDT', 'XAUUSD+', 4216.49, 0.01, 4216.49, 8.2, 100, 1764763697, NULL, NULL, 4427.3145), (5547, 10138, 'USDT', 'XAUUSD+', 4216.58, 0.01, 4216.58, 8.29, 100, 1764763697, NULL, NULL, 4427.409000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4216.54, 0.01, 4216.54, 8.25, 100, 1764763697, NULL, NULL, 4427.367), (5547, 10138, 'USDT', 'XAUUSD+', 4216.56, 0.01, 4216.56, 8.27, 100, 1764763697, NULL, NULL, 4427.388000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4216.87, 0.01, 4216.87, 8.58, 100, 1764763697, NULL, NULL, 4427.7135), (5547, 10138, 'USDT', 'XAUUSD+', 4184.69, 0.01, 4184.69, -23.6, 100, 1764763697, NULL, NULL, 4393.9245), (5547, 10138, 'USDT', 'XAUUSD+', 4223.51, 0.01, 4223.51, 15.22, 100, 1764763697, NULL, NULL, 4434.6855000000005), (5547, 10138, 'USDT', 'XAUUSD+', 4223.73, 0.01, 4223.73, 15.44, 100, 1764763697, NULL, NULL, 4434.916499999999), (5547, 10138, 'USDT', 'XAUUSD+', 4223.62, 0.01, 4223.62, 15.33, 100, 1764763697, NULL, NULL, 4434.801) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10138 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5547, 10138, 'USDT', 'XAUUSD+', 4252.98, 0.01, 4252.98, 44.69, 100, 1764763697, NULL, NULL, 4465.629), (5547, 10138, 'USDT', 'XAUUSD+', 4251.6, 0.01, 4251.6, 43.31, 100, 1764763697, NULL, NULL, 4464.18), (5547, 10138, 'USDT', 'XAUUSD+', 4252.58, 0.01, 4252.58, 44.29, 100, 1764763697, NULL, NULL, 4465.209), (5547, 10138, 'USDT', 'XAUUSD+', 4252.44, 0.01, 4252.44, 44.15, 100, 1764763697, NULL, NULL, 4465.062), (5547, 10138, 'USDT', 'XAUUSD+', 4251.83, 0.01, 4251.83, 43.54, 100, 1764763697, NULL, NULL, 4464.4215), (5547, 10138, 'USDT', 'XAUUSD+', 4251.99, 0.01, 4251.99, 43.7, 100, 1764763697, NULL, NULL, 4464.5895), (5547, 10138, 'USDT', 'XAUUSD+', 4252.99, 0.01, 4252.99, 44.7, 100, 1764763697, NULL, NULL, 4465.6395), (5547, 10138, 'USDT', 'XAUUSD+', 4252.46, 0.01, 4252.46, 44.17, 100, 1764763697, NULL, NULL, 4465.0830000000005), (5547, 10138, 'USDT', 'XAUUSD+', 4253.18, 0.01, 4253.18, 44.89, 100, 1764763697, NULL, NULL, 4465.839000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4241.25, 0.01, 4241.25, 32.96, 100, 1764763697, NULL, NULL, 4453.3125), (5547, 10138, 'USDT', 'XAUUSD+', 4241.24, 0.01, 4241.24, 32.95, 100, 1764763697, NULL, NULL, 4453.302), (5547, 10138, 'USDT', 'XAUUSD+', 4238.61, 0.01, 4238.61, 30.32, 100, 1764763697, NULL, NULL, 4450.5405), (5547, 10138, 'USDT', 'XAUUSD+', 4229.75, 0.01, 4229.75, 21.46, 100, 1764763697, NULL, NULL, 4441.2375), (5547, 10138, 'USDT', 'XAUUSD+', 4232.45, 0.01, 4232.45, 24.16, 100, 1764763697, NULL, NULL, 4444.0725), (5547, 10138, 'USDT', 'XAUUSD+', 4232.3, 0.01, 4232.3, 24.01, 100, 1764763697, NULL, NULL, 4443.915), (5547, 10138, 'USDT', 'XAUUSD+', 4232.25, 0.01, 4232.25, 23.96, 100, 1764763697, NULL, NULL, 4443.8625), (5547, 10138, 'USDT', 'XAUUSD+', 4232.38, 0.01, 4232.38, 24.09, 100, 1764763697, NULL, NULL, 4443.999000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4232.38, 0.01, 4232.38, 24.09, 100, 1764763697, NULL, NULL, 4443.999000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4232.72, 0.01, 4232.72, 24.43, 100, 1764763697, NULL, NULL, 4444.356000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4232.93, 0.01, 4232.93, 24.64, 100, 1764763697, NULL, NULL, 4444.5765), (5547, 10138, 'USDT', 'XAUUSD+', 4231.73, 0.01, 4231.73, 23.44, 100, 1764763697, NULL, NULL, 4443.3165), (5547, 10138, 'USDT', 'XAUUSD+', 4227.03, 0.01, 4227.03, 18.74, 100, 1764763697, NULL, NULL, 4438.3814999999995), (5547, 10138, 'USDT', 'XAUUSD+', 4205.62, 0.01, 4205.62, -2.67, 100, 1764763697, NULL, NULL, 4415.901), (5547, 10138, 'USDT', 'XAUUSD+', 4204.95, 0.01, 4204.95, -3.34, 100, 1764763697, NULL, NULL, 4415.1975), (5547, 10138, 'USDT', 'XAUUSD+', 4217.32, 0.01, 4217.32, 9.03, 100, 1764763697, NULL, NULL, 4428.186), (5547, 10138, 'USDT', 'XAUUSD+', 4216.35, 0.01, 4216.35, 8.06, 100, 1764763697, NULL, NULL, 4427.1675000000005), (5547, 10138, 'USDT', 'XAUUSD+', 4216.36, 0.01, 4216.36, 8.07, 100, 1764763697, NULL, NULL, 4427.178), (5547, 10138, 'USDT', 'XAUUSD+', 4216.49, 0.01, 4216.49, 8.2, 100, 1764763697, NULL, NULL, 4427.3145), (5547, 10138, 'USDT', 'XAUUSD+', 4216.58, 0.01, 4216.58, 8.29, 100, 1764763697, NULL, NULL, 4427.409000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4216.54, 0.01, 4216.54, 8.25, 100, 1764763697, NULL, NULL, 4427.367), (5547, 10138, 'USDT', 'XAUUSD+', 4216.56, 0.01, 4216.56, 8.27, 100, 1764763697, NULL, NULL, 4427.388000000001), (5547, 10138, 'USDT', 'XAUUSD+', 4216.87, 0.01, 4216.87, 8.58, 100, 1764763697, NULL, NULL, 4427.7135), (5547, 10138, 'USDT', 'XAUUSD+', 4184.69, 0.01, 4184.69, -23.6, 100, 1764763697, NULL, NULL, 4393.9245), (5547, 10138, 'USDT', 'XAUUSD+', 4223.51, 0.01, 4223.51, 15.22, 100, 1764763697, NULL, NULL, 4434.6855000000005), (5547, 10138, 'USDT', 'XAUUSD+', 4223.73, 0.01, 4223.73, 15.44, 100, 1764763697, NULL, NULL, 4434.916499999999), (5547, 10138, 'USDT', 'XAUUSD+', 4223.62, 0.01, 4223.62, 15.33, 100, 1764763697, NULL, NULL, 4434.801) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5548, 10140, 'USDT', 'XAUUSD+', 4219.79, 0.01, 4219.79, 12.02, 100, 1764763683, NULL, NULL, 4430.779500000001), (5548, 10140, 'USDT', 'XAUUSD+', 4239.06, 0.01, 4239.06, 31.29, 100, 1764763683, NULL, NULL, 4451.013000000001), (5548, 10140, 'USDT', 'XAUUSD+', 4229.75, 0.01, 4229.75, 21.98, 100, 1764763683, NULL, NULL, 4441.2375), (5548, 10140, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 25.01, 100, 1764763683, NULL, NULL, 4444.419), (5548, 10140, 'USDT', 'XAUUSD+', 4223.65, 0.01, 4223.65, 15.88, 100, 1764763683, NULL, NULL, 4434.8324999999995), (5548, 10140, 'USDT', 'XAUUSD+', 4223.81, 0.01, 4223.81, 16.04, 100, 1764763683, NULL, NULL, 4435.000500000001) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10140 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5548, 10140, 'USDT', 'XAUUSD+', 4219.79, 0.01, 4219.79, 12.02, 100, 1764763683, NULL, NULL, 4430.779500000001), (5548, 10140, 'USDT', 'XAUUSD+', 4239.06, 0.01, 4239.06, 31.29, 100, 1764763683, NULL, NULL, 4451.013000000001), (5548, 10140, 'USDT', 'XAUUSD+', 4229.75, 0.01, 4229.75, 21.98, 100, 1764763683, NULL, NULL, 4441.2375), (5548, 10140, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 25.01, 100, 1764763683, NULL, NULL, 4444.419), (5548, 10140, 'USDT', 'XAUUSD+', 4223.65, 0.01, 4223.65, 15.88, 100, 1764763683, NULL, NULL, 4434.8324999999995), (5548, 10140, 'USDT', 'XAUUSD+', 4223.81, 0.01, 4223.81, 16.04, 100, 1764763683, NULL, NULL, 4435.000500000001) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5549, 10142, 'USDT', 'XAUUSD+', 4219.79, 0.01, 4219.79, 11.53, 100, 1764763697, NULL, NULL, 4430.779500000001), (5549, 10142, 'USDT', 'XAUUSD+', 4206.91, 0.01, 4206.91, -1.35, 100, 1764763697, NULL, NULL, 4417.2555), (5549, 10142, 'USDT', 'XAUUSD+', 4223.73, 0.01, 4223.73, 15.47, 100, 1764763697, NULL, NULL, 4434.916499999999) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10142 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5549, 10142, 'USDT', 'XAUUSD+', 4219.79, 0.01, 4219.79, 11.53, 100, 1764763697, NULL, NULL, 4430.779500000001), (5549, 10142, 'USDT', 'XAUUSD+', 4206.91, 0.01, 4206.91, -1.35, 100, 1764763697, NULL, NULL, 4417.2555), (5549, 10142, 'USDT', 'XAUUSD+', 4223.73, 0.01, 4223.73, 15.47, 100, 1764763697, NULL, NULL, 4434.916499999999) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_batch_upsert_positions:293 - 批量插入/更新持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5550, 10144, 'USDT', 'XAUUSD+', 4230.53, 0.01, 4230.53, 22.51, 100, 1764763688, NULL, NULL, 4442.0565), (5550, 10144, 'USDT', 'XAUUSD+', 4238.96, 0.01, 4238.96, 30.94, 100, 1764763688, NULL, NULL, 4450.908), (5550, 10144, 'USDT', 'XAUUSD+', 4229.97, 0.01, 4229.97, 21.95, 100, 1764763688, NULL, NULL, 4441.468500000001), (5550, 10144, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 24.76, 100, 1764763688, NULL, NULL, 4444.419), (5550, 10144, 'USDT', 'XAUUSD+', 4223.54, 0.01, 4223.54, 15.52, 100, 1764763688, NULL, NULL, 4434.717000000001), (5550, 10144, 'USDT', 'XAUUSD+', 4223.72, 0.01, 4223.72, 15.7, 100, 1764763688, NULL, NULL, 4434.906000000001) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | ERROR | sync.position_sync:_sync_single_account_batch:237 - 批量同步账号 10144 持仓失败: (pymysql.err.OperationalError) (1136, "Column count doesn't match value count at row 1") +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES (5550, 10144, 'USDT', 'XAUUSD+', 4230.53, 0.01, 4230.53, 22.51, 100, 1764763688, NULL, NULL, 4442.0565), (5550, 10144, 'USDT', 'XAUUSD+', 4238.96, 0.01, 4238.96, 30.94, 100, 1764763688, NULL, NULL, 4450.908), (5550, 10144, 'USDT', 'XAUUSD+', 4229.97, 0.01, 4229.97, 21.95, 100, 1764763688, NULL, NULL, 4441.468500000001), (5550, 10144, 'USDT', 'XAUUSD+', 4232.78, 0.01, 4232.78, 24.76, 100, 1764763688, NULL, NULL, 4444.419), (5550, 10144, 'USDT', 'XAUUSD+', 4223.54, 0.01, 4223.54, 15.52, 100, 1764763688, NULL, NULL, 4434.717000000001), (5550, 10144, 'USDT', 'XAUUSD+', 4223.72, 0.01, 4223.72, 15.7, 100, 1764763688, NULL, NULL, 4434.906000000001) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +(Background on this error at: https://sqlalche.me/e/20/e3q8) +2025-12-04 09:32:43 | INFO | sync.position_sync:sync_batch:39 - 持仓批量同步完成: 处理 0 条,更新 0 条,插入 0 条,删除 0 条,耗时 0.03秒 +2025-12-04 09:32:43 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 09:32:43 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.03 秒,等待 60 秒 +2025-12-04 09:32:48 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:33:43 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:37:43 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:37:43 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:37:43 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:37:43 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:37:43 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:37:43 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:37:43 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:37:43 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:37:43 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:37:43 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:37:43 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:37:43 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:37:43 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:37:43 | INFO | sync.position_sync:sync_batch:21 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 09:37:43 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 09:37:43 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 09:37:43 | INFO | sync.position_sync:sync_batch:32 - 收集到 179 条持仓数据 +2025-12-04 09:37:43 | INFO | sync.position_sync:_sync_positions_batch_to_db:145 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 09:37:43 | ERROR | sync.position_sync:_sync_positions_batch_to_db:165 - 批量同步持仓到数据库失败: cannot unpack non-iterable NoneType object +2025-12-04 09:37:43 | ERROR | sync.position_sync:sync_batch:42 - 持仓批量同步失败 +2025-12-04 09:37:43 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 09:37:43 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 09:37:47 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:38:43 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:41:48 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:41:48 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:41:48 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:41:48 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:41:48 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:41:48 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:41:48 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:41:48 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:41:48 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:41:48 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:41:48 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:41:48 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:41:48 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:41:48 | INFO | sync.position_sync:sync_batch:21 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 09:41:48 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 09:41:48 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 09:41:48 | INFO | sync.position_sync:sync_batch:32 - 收集到 179 条持仓数据 +2025-12-04 09:41:48 | INFO | sync.position_sync:_sync_positions_batch_to_db:145 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 09:41:48 | ERROR | sync.position_sync:_sync_positions_batch_to_db:165 - 批量同步持仓到数据库失败: cannot unpack non-iterable NoneType object +2025-12-04 09:41:48 | ERROR | sync.position_sync:sync_batch:42 - 持仓批量同步失败 +2025-12-04 09:41:48 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 09:41:48 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 09:41:53 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:42:48 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 09:47:37 | ERROR | __main__::49 - 程序异常: f-string: unmatched '(' (position_sync.py, line 260) +2025-12-04 09:47:37 | ERROR | __main__::51 - Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/main.py", line 45, in + asyncio.run(main()) + File "/root/.pyenv/versions/3.11.10/lib/python3.11/asyncio/runners.py", line 190, in run + return runner.run(main) + ^^^^^^^^^^^^^^^^ + File "/root/.pyenv/versions/3.11.10/lib/python3.11/asyncio/runners.py", line 118, in run + return self._loop.run_until_complete(task) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/root/.pyenv/versions/3.11.10/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete + return future.result() + ^^^^^^^^^^^^^^^ + File "/root/project/exchange_monitor_sync/main.py", line 25, in main + from sync.manager import SyncManager + File "/root/project/exchange_monitor_sync/sync/manager.py", line 13, in + from .position_sync import PositionSyncBatch + File "/root/project/exchange_monitor_sync/sync/position_sync.py", line 260 + f"'{data.get("side")}', " + ^^^^ +SyntaxError: f-string: unmatched '(' + +2025-12-04 09:48:21 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 09:48:21 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 09:48:21 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 09:48:21 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 09:48:21 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 09:48:21 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 09:48:21 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 09:48:21 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:48:21 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 09:48:21 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 09:48:21 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 09:48:21 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 09:48:21 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 09:48:21 | INFO | sync.position_sync:sync_batch:21 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 09:48:21 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 09:48:21 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 09:48:21 | INFO | sync.position_sync:sync_batch:32 - 收集到 179 条持仓数据 +2025-12-04 09:48:21 | INFO | sync.position_sync:_sync_positions_batch_to_db:145 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 09:48:21 | INFO | sync.position_sync:sync_batch:39 - 持仓批量同步完成: 处理 179 条,更新 0 条,插入 179 条,删除 0 条,耗时 0.07秒 +2025-12-04 09:48:21 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.07秒 | 平均耗时: 0.01秒 +2025-12-04 09:48:21 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.07 秒,等待 60 秒 +2025-12-04 09:48:24 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 09:49:21 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:08:38 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:08:38 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:08:38 | ERROR | __main__:main:37 - 服务运行异常: Can't instantiate abstract class PositionSyncBatch with abstract method sync +2025-12-04 10:08:38 | ERROR | __main__:main:39 - Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/main.py", line 31, in main + manager = SyncManager() + ^^^^^^^^^^^^^ + File "/root/project/exchange_monitor_sync/sync/manager.py", line 37, in __init__ + position_sync = PositionSyncBatch() + ^^^^^^^^^^^^^^^^^^^ +TypeError: Can't instantiate abstract class PositionSyncBatch with abstract method sync + +2025-12-04 10:08:38 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:09:29 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:09:29 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:09:29 | ERROR | __main__:main:37 - 服务运行异常: Can't instantiate abstract class PositionSyncBatch with abstract method sync +2025-12-04 10:09:29 | ERROR | __main__:main:39 - Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/main.py", line 31, in main + manager = SyncManager() + ^^^^^^^^^^^^^ + File "/root/project/exchange_monitor_sync/sync/manager.py", line 37, in __init__ + position_sync = PositionSyncBatch() + ^^^^^^^^^^^^^^^^^^^ +TypeError: Can't instantiate abstract class PositionSyncBatch with abstract method sync + +2025-12-04 10:09:29 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:10:45 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:10:45 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:10:45 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:10:45 | ERROR | __main__:main:37 - 服务运行异常: Can't instantiate abstract class PositionSyncBatch with abstract method sync +2025-12-04 10:10:45 | ERROR | __main__:main:39 - Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/main.py", line 31, in main + manager = SyncManager() + ^^^^^^^^^^^^^ + File "/root/project/exchange_monitor_sync/sync/manager.py", line 37, in __init__ + position_sync = PositionSyncBatch() + ^^^^^^^^^^^^^^^^^^^ +TypeError: Can't instantiate abstract class PositionSyncBatch with abstract method sync + +2025-12-04 10:10:45 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:12:18 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:12:18 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:12:18 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:12:18 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 10:12:18 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 10:12:18 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 10:12:18 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 10:12:18 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 10:12:18 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:12:18 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 10:12:18 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:12:18 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 10:12:18 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 10:12:18 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 10:12:18 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 10:12:18 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 10:12:18 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 10:12:18 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 10:12:18 | ERROR | sync.position_sync:sync_batch:46 - 持仓批量同步失败: cannot unpack non-iterable NoneType object +2025-12-04 10:12:18 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 10:12:18 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 10:12:19 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 10:13:18 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:15:22 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:15:22 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:15:22 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:15:22 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 10:15:22 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 10:15:22 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 10:15:22 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 10:15:22 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 10:15:22 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:15:22 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 10:15:22 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:15:22 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 10:15:22 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 10:15:22 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 10:15:22 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 10:15:22 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 10:15:22 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 10:15:22 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 10:15:22 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:83 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 10:15:22 | ERROR | sync.position_sync:sync_batch:47 - 持仓批量同步失败: unhashable type: 'slice' +2025-12-04 10:15:22 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 10:15:22 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 10:15:29 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 10:16:22 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:16:47 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:16:47 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:16:47 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:16:47 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 10:16:47 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 10:16:47 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 10:16:47 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 10:16:47 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 10:16:47 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:16:47 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 10:16:47 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:16:47 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 10:16:47 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 10:16:47 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 10:16:47 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 10:16:47 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 10:16:47 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 10:16:47 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 10:16:47 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:83 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 10:16:47 | ERROR | sync.position_sync:sync_batch:47 - 持仓批量同步失败: unhashable type: 'slice' +2025-12-04 10:16:47 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 10:16:47 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 10:16:52 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 10:17:48 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:20:53 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:20:53 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:20:53 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:20:53 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 10:20:53 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 10:20:53 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 10:20:53 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 10:20:53 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 10:20:53 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:20:53 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 10:20:53 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:20:53 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 10:20:53 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 10:20:53 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 10:20:53 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 10:20:53 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 10:20:53 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 10:20:53 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 10:20:53 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:81 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 10:20:53 | ERROR | sync.position_sync:sync_batch:47 - 持仓批量同步失败: unhashable type: 'slice' +2025-12-04 10:20:53 | ERROR | sync.position_sync:sync_batch:54 - 完整堆栈跟踪: +Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/sync/position_sync.py", line 37, in sync_batch + success, stats = await self._sync_positions_batch_to_db_optimized(all_positions) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/root/project/exchange_monitor_sync/sync/position_sync.py", line 85, in _sync_positions_batch_to_db_optimized + group = positions_by_account[group_idx:group_idx + 10] + ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ +TypeError: unhashable type: 'slice' + +2025-12-04 10:20:53 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 10:20:53 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 10:20:57 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 10:21:53 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:28:11 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:28:11 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:28:11 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:28:11 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 10:28:11 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 10:28:11 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 10:28:11 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 10:28:11 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 10:28:11 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:28:11 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 10:28:11 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:28:11 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 10:28:11 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 10:28:11 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 10:28:11 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 10:28:11 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 10:28:11 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 10:28:11 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 10:28:11 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:87 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 10:28:11 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 10:28:11 | ERROR | sync.position_sync:sync_batch:47 - 持仓批量同步失败: cannot unpack non-iterable NoneType object +2025-12-04 10:28:11 | ERROR | sync.position_sync:sync_batch:54 - 完整堆栈跟踪: +Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/sync/position_sync.py", line 37, in sync_batch + success, stats = await self._sync_positions_batch_to_db_optimized(all_positions) + ^^^^^^^^^^^^^^ +TypeError: cannot unpack non-iterable NoneType object + +2025-12-04 10:28:11 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 10:28:11 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 10:28:15 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 10:29:11 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:50:05 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:50:05 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:50:05 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:50:05 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 10:50:05 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 10:50:05 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 10:50:05 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 10:50:05 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 10:50:05 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:50:05 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 10:50:05 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:50:05 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 10:50:05 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 10:50:05 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 10:50:05 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 10:50:05 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 10:50:05 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 10:50:05 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 10:50:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:87 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 10:50:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 10:50:05 | ERROR | sync.position_sync:_sync_positions_batch_to_db_optimized:163 - 批量插入/更新失败: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter 'quantity' +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES + (%(st_id)s, %(k_id)s, %(asset)s, %(symbol)s, %(side)s, %(price)s, %(quantity)s, %(asset_num)s, %(asset_profit)s, %(leverage)s, + %(uptime)s, %(profit_price)s, %(stop_price)s, %(liquidation_price)s) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +[parameters: [{'st_id': 5531, 'k_id': 10106, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4199.77486405, 'asset_num': 159591.4448339, 'asset_profit': -22.9848339, 'leverage': 12, 'uptime': 1764763596, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 3190.62911687, 'sum': 38.0}, {'st_id': 5534, 'k_id': 10113, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4201.84400204, 'asset_num': 75633.19203668, 'asset_profit': -24.01203668, 'leverage': 10, 'uptime': 1764763691, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2546.72655728, 'sum': 18.0}, {'st_id': 5535, 'k_id': 10114, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4201.44167658, 'asset_num': 126043.25029752, 'asset_profit': -27.95029752, 'leverage': 10, 'uptime': 1764763694, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2769.87208456, 'sum': 30.0}, {'st_id': 5539, 'k_id': 10122, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4202.12636657, 'asset_num': 37819.13729915, 'asset_profit': -14.27729915, 'leverage': 10, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2611.70420829, 'sum': 9.0}, {'st_id': 5540, 'k_id': 10124, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4201.1854272, 'asset_num': 37810.66884478, 'asset_profit': -5.80884478, 'leverage': 10, 'uptime': 1764763700, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2444.68176292, 'sum': 9.0}, {'st_id': 5543, 'k_id': 10130, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4201.26117558, 'asset_num': 126037.83526751, 'asset_profit': -8.73526751, 'leverage': 10, 'uptime': 1764763704, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2665.56767424, 'sum': 30.0}, {'st_id': 5544, 'k_id': 10132, 'asset': 'USDT', 'symbol': 'BTCUSDT', 'side': 'sell', 'price': 113334.3, 'asset_num': 45333.72, 'asset_profit': 8188.548, 'leverage': 20, 'uptime': 1764763696, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 103636.83198471, 'sum': 0.4}, {'st_id': 5544, 'k_id': 10132, 'asset': 'USDT', 'symbol': 'BTC-5DEC25-91000-P-USDT', 'side': 'sell', 'price': 567.5, 'asset_num': -220.9255788, 'asset_profit': 6.0744212, 'leverage': 0, 'uptime': 1764763696, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 0.0, 'sum': 0.4}, {'st_id': 5544, 'k_id': 10132, 'asset': 'USDT', 'symbol': 'BTC-4DEC25-92000-C-USDT', 'side': 'buy', 'price': 1635.0, 'asset_num': 564.29306909, 'asset_profit': -89.7069309, 'leverage': 0, 'uptime': 1764763696, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 0.0, 'sum': 0.4}, {'st_id': 5547, 'k_id': 10137, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4203.9434543, 'asset_num': 151341.96435478, 'asset_profit': -98.76435478, 'leverage': 10, 'uptime': 1764763709, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2831.05021328, 'sum': 36.0}, {'st_id': 5548, 'k_id': 10139, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4201.38628945, 'asset_num': 25208.31773672, 'asset_profit': -1.11773672, 'leverage': 10, 'uptime': 1764763712, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2299.96605152, 'sum': 6.0}, {'st_id': 5549, 'k_id': 10141, 'asset': 'USDT', 'symbol': 'XAUTUSDT', 'side': 'buy', 'price': 4200.97520788, 'asset_num': 12602.92562363, 'asset_profit': 0.67437637, 'leverage': 10, 'uptime': 1764763715, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 2597.31051071, 'sum': 3.0}]] +(Background on this error at: https://sqlalche.me/e/20/cd3x) +2025-12-04 10:50:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 10:50:05 | ERROR | sync.position_sync:_sync_positions_batch_to_db_optimized:163 - 批量插入/更新失败: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter 'quantity' +[SQL: + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES + (%(st_id)s, %(k_id)s, %(asset)s, %(symbol)s, %(side)s, %(price)s, %(quantity)s, %(asset_num)s, %(asset_profit)s, %(leverage)s, + %(uptime)s, %(profit_price)s, %(stop_price)s, %(liquidation_price)s) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + ] +[parameters: [{'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4219.78, 'asset_num': 4219.78, 'asset_profit': 11.51, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4430.769, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.65, 'asset_num': 4239.65, 'asset_profit': 31.38, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.6325, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.65, 'asset_num': 4239.65, 'asset_profit': 31.38, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.6325, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.78, 'asset_num': 4239.78, 'asset_profit': 31.51, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.769, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.76, 'asset_num': 4239.76, 'asset_profit': 31.49, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.7480000000005, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4238.89, 'asset_num': 4238.89, 'asset_profit': 30.62, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4450.834500000001, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4237.57, 'asset_num': 4237.57, 'asset_profit': 29.3, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4449.4484999999995, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4237.55, 'asset_num': 4237.55, 'asset_profit': 29.28, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4449.427500000001, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4237.6, 'asset_num': 4237.6, 'asset_profit': 29.33, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4449.4800000000005, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4229.85, 'asset_num': 4229.85, 'asset_profit': 21.58, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4441.342500000001, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.78, 'asset_num': 4232.78, 'asset_profit': 24.51, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.419, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4233.13, 'asset_num': 4233.13, 'asset_profit': 24.86, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.7865, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4233.17, 'asset_num': 4233.17, 'asset_profit': 24.9, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.8285000000005, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4233.12, 'asset_num': 4233.12, 'asset_profit': 24.85, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.776, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4233.46, 'asset_num': 4233.46, 'asset_profit': 25.19, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4445.133, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.42, 'asset_num': 4232.42, 'asset_profit': 24.15, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.041, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.72, 'asset_num': 4232.72, 'asset_profit': 24.45, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.356000000001, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.93, 'asset_num': 4232.93, 'asset_profit': 24.66, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.5765, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.91, 'asset_num': 4232.91, 'asset_profit': 24.64, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.5555, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.86, 'asset_num': 4232.86, 'asset_profit': 24.59, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.503, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.24, 'asset_num': 4232.24, 'asset_profit': 23.97, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4443.852, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4231.4, 'asset_num': 4231.4, 'asset_profit': 23.13, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4442.97, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4215.3, 'asset_num': 4215.3, 'asset_profit': 7.03, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4426.0650000000005, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4217.65, 'asset_num': 4217.65, 'asset_profit': 9.38, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4428.5325, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4217.67, 'asset_num': 4217.67, 'asset_profit': 9.4, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4428.5535, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4217.98, 'asset_num': 4217.98, 'asset_profit': 9.71, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4428.879, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4217.81, 'asset_num': 4217.81, 'asset_profit': 9.54, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4428.700500000001, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4217.72, 'asset_num': 4217.72, 'asset_profit': 9.45, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4428.606000000001, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4217.96, 'asset_num': 4217.96, 'asset_profit': 9.69, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4428.858, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4189.43, 'asset_num': 4189.43, 'asset_profit': -18.84, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4398.901500000001, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4224.21, 'asset_num': 4224.21, 'asset_profit': 15.94, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4435.4205, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4224.44, 'asset_num': 4224.44, 'asset_profit': 16.17, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4435.661999999999, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4224.49, 'asset_num': 4224.49, 'asset_profit': 16.22, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4435.7145, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4224.47, 'asset_num': 4224.47, 'asset_profit': 16.2, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4435.6935, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.15, 'asset_num': 4223.15, 'asset_profit': 14.88, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.3075, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.36, 'asset_num': 4223.36, 'asset_profit': 15.09, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.528, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.57, 'asset_num': 4223.57, 'asset_profit': 15.3, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.7485, 'sum': 0.01}, {'st_id': 5531, 'k_id': 10107, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4222.75, 'asset_num': 4222.75, 'asset_profit': 14.48, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4433.8875, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4220.02, 'asset_num': 4220.02, 'asset_profit': 11.75, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4431.021000000001, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.06, 'asset_num': 4239.06, 'asset_profit': 30.79, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.013000000001, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.6, 'asset_num': 4239.6, 'asset_profit': 31.33, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.580000000001, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.8, 'asset_num': 4239.8, 'asset_profit': 31.53, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.79, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.76, 'asset_num': 4239.76, 'asset_profit': 31.49, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.7480000000005, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.2, 'asset_num': 4239.2, 'asset_profit': 30.93, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.16, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4237.57, 'asset_num': 4237.57, 'asset_profit': 29.3, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4449.4484999999995, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4237.57, 'asset_num': 4237.57, 'asset_profit': 29.3, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4449.4484999999995, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4237.56, 'asset_num': 4237.56, 'asset_profit': 29.29, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4449.438000000001, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4238.31, 'asset_num': 4238.31, 'asset_profit': 30.04, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4450.2255000000005, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4229.55, 'asset_num': 4229.55, 'asset_profit': 21.28, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4441.0275, 'sum': 0.01}, {'st_id': 5535, 'k_id': 10115, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.44, 'asset_num': 4232.44, 'asset_profit': 24.17, 'leverage': 100, 'uptime': 1764763698, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.062, 'sum': 0.01} ... 67 parameters truncated ... {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4251.6, 'asset_num': 4251.6, 'asset_profit': 43.31, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4464.18, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4252.58, 'asset_num': 4252.58, 'asset_profit': 44.29, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4465.209, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4252.44, 'asset_num': 4252.44, 'asset_profit': 44.15, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4465.062, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4251.83, 'asset_num': 4251.83, 'asset_profit': 43.54, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4464.4215, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4251.99, 'asset_num': 4251.99, 'asset_profit': 43.7, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4464.5895, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4252.99, 'asset_num': 4252.99, 'asset_profit': 44.7, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4465.6395, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4252.46, 'asset_num': 4252.46, 'asset_profit': 44.17, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4465.0830000000005, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4253.18, 'asset_num': 4253.18, 'asset_profit': 44.89, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4465.839000000001, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4241.25, 'asset_num': 4241.25, 'asset_profit': 32.96, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4453.3125, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4241.24, 'asset_num': 4241.24, 'asset_profit': 32.95, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4453.302, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4238.61, 'asset_num': 4238.61, 'asset_profit': 30.32, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4450.5405, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4229.75, 'asset_num': 4229.75, 'asset_profit': 21.46, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4441.2375, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.45, 'asset_num': 4232.45, 'asset_profit': 24.16, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.0725, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.3, 'asset_num': 4232.3, 'asset_profit': 24.01, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4443.915, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.25, 'asset_num': 4232.25, 'asset_profit': 23.96, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4443.8625, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.38, 'asset_num': 4232.38, 'asset_profit': 24.09, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4443.999000000001, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.38, 'asset_num': 4232.38, 'asset_profit': 24.09, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4443.999000000001, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.72, 'asset_num': 4232.72, 'asset_profit': 24.43, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.356000000001, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.93, 'asset_num': 4232.93, 'asset_profit': 24.64, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.5765, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4231.73, 'asset_num': 4231.73, 'asset_profit': 23.44, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4443.3165, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4227.03, 'asset_num': 4227.03, 'asset_profit': 18.74, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4438.3814999999995, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4205.62, 'asset_num': 4205.62, 'asset_profit': -2.67, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4415.901, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4204.95, 'asset_num': 4204.95, 'asset_profit': -3.34, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4415.1975, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4217.32, 'asset_num': 4217.32, 'asset_profit': 9.03, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4428.186, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4216.35, 'asset_num': 4216.35, 'asset_profit': 8.06, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4427.1675000000005, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4216.36, 'asset_num': 4216.36, 'asset_profit': 8.07, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4427.178, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4216.49, 'asset_num': 4216.49, 'asset_profit': 8.2, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4427.3145, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4216.58, 'asset_num': 4216.58, 'asset_profit': 8.29, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4427.409000000001, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4216.54, 'asset_num': 4216.54, 'asset_profit': 8.25, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4427.367, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4216.56, 'asset_num': 4216.56, 'asset_profit': 8.27, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4427.388000000001, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4216.87, 'asset_num': 4216.87, 'asset_profit': 8.58, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4427.7135, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4184.69, 'asset_num': 4184.69, 'asset_profit': -23.6, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4393.9245, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.51, 'asset_num': 4223.51, 'asset_profit': 15.22, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.6855000000005, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.73, 'asset_num': 4223.73, 'asset_profit': 15.44, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.916499999999, 'sum': 0.01}, {'st_id': 5547, 'k_id': 10138, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.62, 'asset_num': 4223.62, 'asset_profit': 15.33, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.801, 'sum': 0.01}, {'st_id': 5548, 'k_id': 10140, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4219.79, 'asset_num': 4219.79, 'asset_profit': 12.02, 'leverage': 100, 'uptime': 1764763683, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4430.779500000001, 'sum': 0.01}, {'st_id': 5548, 'k_id': 10140, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4239.06, 'asset_num': 4239.06, 'asset_profit': 31.29, 'leverage': 100, 'uptime': 1764763683, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4451.013000000001, 'sum': 0.01}, {'st_id': 5548, 'k_id': 10140, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4229.75, 'asset_num': 4229.75, 'asset_profit': 21.98, 'leverage': 100, 'uptime': 1764763683, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4441.2375, 'sum': 0.01}, {'st_id': 5548, 'k_id': 10140, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.78, 'asset_num': 4232.78, 'asset_profit': 25.01, 'leverage': 100, 'uptime': 1764763683, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.419, 'sum': 0.01}, {'st_id': 5548, 'k_id': 10140, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.65, 'asset_num': 4223.65, 'asset_profit': 15.88, 'leverage': 100, 'uptime': 1764763683, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.8324999999995, 'sum': 0.01}, {'st_id': 5548, 'k_id': 10140, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.81, 'asset_num': 4223.81, 'asset_profit': 16.04, 'leverage': 100, 'uptime': 1764763683, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4435.000500000001, 'sum': 0.01}, {'st_id': 5549, 'k_id': 10142, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4219.79, 'asset_num': 4219.79, 'asset_profit': 11.53, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4430.779500000001, 'sum': 0.01}, {'st_id': 5549, 'k_id': 10142, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4206.91, 'asset_num': 4206.91, 'asset_profit': -1.35, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4417.2555, 'sum': 0.01}, {'st_id': 5549, 'k_id': 10142, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.73, 'asset_num': 4223.73, 'asset_profit': 15.47, 'leverage': 100, 'uptime': 1764763697, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.916499999999, 'sum': 0.01}, {'st_id': 5550, 'k_id': 10144, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4230.53, 'asset_num': 4230.53, 'asset_profit': 22.51, 'leverage': 100, 'uptime': 1764763688, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4442.0565, 'sum': 0.01}, {'st_id': 5550, 'k_id': 10144, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4238.96, 'asset_num': 4238.96, 'asset_profit': 30.94, 'leverage': 100, 'uptime': 1764763688, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4450.908, 'sum': 0.01}, {'st_id': 5550, 'k_id': 10144, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4229.97, 'asset_num': 4229.97, 'asset_profit': 21.95, 'leverage': 100, 'uptime': 1764763688, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4441.468500000001, 'sum': 0.01}, {'st_id': 5550, 'k_id': 10144, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4232.78, 'asset_num': 4232.78, 'asset_profit': 24.76, 'leverage': 100, 'uptime': 1764763688, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4444.419, 'sum': 0.01}, {'st_id': 5550, 'k_id': 10144, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.54, 'asset_num': 4223.54, 'asset_profit': 15.52, 'leverage': 100, 'uptime': 1764763688, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.717000000001, 'sum': 0.01}, {'st_id': 5550, 'k_id': 10144, 'asset': 'USDT', 'symbol': 'XAUUSD+', 'side': 'sell', 'price': 4223.72, 'asset_num': 4223.72, 'asset_profit': 15.7, 'leverage': 100, 'uptime': 1764763688, 'profit_price': 0.0, 'stop_price': 0.0, 'liquidation_price': 4434.906000000001, 'sum': 0.01}]] +(Background on this error at: https://sqlalche.me/e/20/cd3x) +2025-12-04 10:50:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:221 - 批量同步完成: 总数=0, 插入=0, 更新=0, 删除=0 +2025-12-04 10:50:05 | ERROR | sync.position_sync:sync_batch:44 - 持仓批量同步失败 +2025-12-04 10:50:05 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 10:50:05 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.01 秒,等待 60 秒 +2025-12-04 10:50:11 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 10:51:05 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 10:51:15 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 10:51:15 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 10:51:15 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 10:51:15 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 10:51:15 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 10:51:15 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 10:51:15 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 10:51:15 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 10:51:15 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:51:15 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 10:51:15 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 10:51:15 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 10:51:15 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 10:51:15 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 10:51:15 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 10:51:15 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 10:51:15 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 10:51:15 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 10:51:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:87 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 10:51:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 10:51:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 10:51:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:221 - 批量同步完成: 总数=179, 插入=14, 更新=153, 删除=0 +2025-12-04 10:51:15 | INFO | sync.position_sync:sync_batch:41 - 持仓批量同步完成: 处理 179 条,更新 153 条,插入 14 条,删除 0 条,耗时 0.03秒 +2025-12-04 10:51:15 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 10:51:15 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.03 秒,等待 60 秒 +2025-12-04 10:51:19 | INFO | sync.manager:signal_handler:384 - 接收到信号 2,正在关闭... +2025-12-04 10:52:15 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 11:52:43 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 11:52:43 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 11:52:43 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 11:52:44 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 11:52:44 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 11:52:44 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 11:52:44 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 11:52:44 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 11:52:44 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 11:52:44 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 11:52:44 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 11:52:44 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 11:52:44 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 11:52:44 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 11:52:44 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 11:52:44 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 11:52:44 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 11:52:44 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 11:52:44 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 11:52:44 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 11:52:44 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 11:52:44 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:220 - 批量同步完成: 总数=179, 插入=14, 更新=153, 删除=0 +2025-12-04 11:52:44 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 153 条,插入 14 条,删除 0 条,耗时 0.03秒 +2025-12-04 11:52:44 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 11:52:44 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.03 秒,等待 60 秒 +2025-12-04 11:53:44 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 11:54:13 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 11:54:13 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 11:54:13 | INFO | sync.manager:_get_computer_names:145 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 11:54:13 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 11:54:13 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 11:54:13 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 11:54:13 | INFO | sync.manager:start:67 - 同步服务启动,间隔 60 秒 +2025-12-04 11:54:13 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 11:54:13 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 11:54:13 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 11:54:13 | INFO | sync.manager:_get_accounts_by_computer_name:163 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 11:54:13 | INFO | sync.manager:_get_accounts_by_computer_name:188 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 11:54:13 | INFO | sync.manager:get_accounts_from_redis:133 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 11:54:13 | INFO | sync.manager:start:86 - 第1次同步开始,共 23 个账号 +2025-12-04 11:54:13 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 11:54:13 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 11:54:13 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 11:54:13 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 11:54:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 11:54:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 11:54:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 11:54:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:220 - 批量同步完成: 总数=179, 插入=5, 更新=162, 删除=0 +2025-12-04 11:54:13 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 162 条,插入 5 条,删除 0 条,耗时 0.03秒 +2025-12-04 11:54:13 | INFO | sync.manager:_update_stats:380 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 11:54:13 | INFO | sync.manager:start:97 - 同步完成,总耗时 0.03 秒,等待 60 秒 +2025-12-04 11:55:13 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 12:00:45 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 12:00:45 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 12:00:45 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 12:00:45 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 12:00:45 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 12:00:45 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 12:00:45 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 12:00:45 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 12:00:45 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:00:45 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 12:00:45 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:00:45 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 12:00:45 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 12:00:45 | INFO | sync.manager:start:84 - 第1次同步开始,共 23 个账号 +2025-12-04 12:00:45 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 12:00:45 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 12:00:45 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 12:00:45 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 12:00:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 12:00:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 12:00:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 12:00:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:220 - 批量同步完成: 总数=179, 插入=14, 更新=153, 删除=0 +2025-12-04 12:00:45 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 153 条,插入 14 条,删除 0 条,耗时 0.03秒 +2025-12-04 12:00:45 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 12:00:45 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 12:01:05 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:01:05 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 12:01:05 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:01:05 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 12:01:05 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 12:01:05 | INFO | sync.manager:start:84 - 第2次同步开始,共 23 个账号 +2025-12-04 12:01:05 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 12:01:05 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 12:01:05 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 12:01:05 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 12:01:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 12:01:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 12:01:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 12:01:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:220 - 批量同步完成: 总数=179, 插入=5, 更新=162, 删除=0 +2025-12-04 12:01:05 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 162 条,插入 5 条,删除 0 条,耗时 0.02秒 +2025-12-04 12:01:05 | INFO | sync.manager:_update_stats:378 - === 第2次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.01秒 +2025-12-04 12:01:05 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 12:01:25 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:01:25 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 12:01:25 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:01:25 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 12:01:25 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 12:01:25 | INFO | sync.manager:start:84 - 第3次同步开始,共 23 个账号 +2025-12-04 12:01:25 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 12:01:25 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 12:01:25 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 12:01:25 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 12:01:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 12:01:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 12:01:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 12:01:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:220 - 批量同步完成: 总数=179, 插入=5, 更新=162, 删除=0 +2025-12-04 12:01:25 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 162 条,插入 5 条,删除 0 条,耗时 0.02秒 +2025-12-04 12:01:25 | INFO | sync.manager:_update_stats:378 - === 第3次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.01秒 +2025-12-04 12:01:25 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 12:01:45 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:01:45 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 12:01:45 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:01:45 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 12:01:45 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 12:01:45 | INFO | sync.manager:start:84 - 第4次同步开始,共 23 个账号 +2025-12-04 12:01:45 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 12:01:45 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 12:01:45 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 12:01:45 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 12:01:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 12:01:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 12:01:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 12:01:45 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:220 - 批量同步完成: 总数=179, 插入=5, 更新=162, 删除=0 +2025-12-04 12:01:45 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 162 条,插入 5 条,删除 0 条,耗时 0.02秒 +2025-12-04 12:01:45 | INFO | sync.manager:_update_stats:378 - === 第4次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.01秒 +2025-12-04 12:01:45 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 12:02:05 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:02:05 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 12:02:05 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:02:05 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 12:02:05 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 12:02:05 | INFO | sync.manager:start:84 - 第5次同步开始,共 23 个账号 +2025-12-04 12:02:05 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 12:02:05 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 12:02:05 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 12:02:05 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 12:02:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 12:02:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 12:02:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 12:02:05 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:220 - 批量同步完成: 总数=179, 插入=5, 更新=162, 删除=0 +2025-12-04 12:02:05 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 162 条,插入 5 条,删除 0 条,耗时 0.02秒 +2025-12-04 12:02:05 | INFO | sync.manager:_update_stats:378 - === 第5次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.01秒 +2025-12-04 12:02:05 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 12:02:17 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 12:02:25 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 12:24:22 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 12:24:22 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 12:24:22 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 12:24:22 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 12:24:22 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 12:24:22 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 12:24:22 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 12:24:22 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 12:24:22 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:24:22 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 12:24:22 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:24:22 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 12:24:22 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 12:24:22 | INFO | sync.manager:start:84 - 第1次同步开始,共 23 个账号 +2025-12-04 12:24:22 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 12:24:22 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 12:24:22 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 12:24:22 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 12:24:22 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:331 - UPSERT完成: 插入 26 条, 更新 153 条 +2025-12-04 12:24:22 | ERROR | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:365 - 批量同步V3失败: (pymysql.err.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES (10106, 5531, 'XAUTUSDT', 'buy'), (10113, 5534, 'XAUTUSDT', 'buy'), (1011' at line 4") +[SQL: + DELETE p FROM deh_strategy_position_new p + WHERE NOT EXISTS ( + SELECT 1 FROM ( + VALUES (10106, 5531, 'XAUTUSDT', 'buy'), (10113, 5534, 'XAUTUSDT', 'buy'), (10114, 5535, 'XAUTUSDT', 'buy'), (10122, 5539, 'XAUTUSDT', 'buy'), (10124, 5540, 'XAUTUSDT', 'buy'), (10130, 5543, 'XAUTUSDT', 'buy'), (10132, 5544, 'BTCUSDT', 'sell'), (10132, 5544, 'BTC-5DEC25-91000-P-USDT', 'sell'), (10132, 5544, 'BTC-4DEC25-92000-C-USDT', 'buy'), (10137, 5547, 'XAUTUSDT', 'buy'), (10139, 5548, 'XAUTUSDT', 'buy'), (10141, 5549, 'XAUTUSDT', 'buy'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10107, 5531, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10115, 5535, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10123, 5539, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10125, 5540, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10131, 5543, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10138, 5547, 'XAUUSD+', 'sell'), (10140, 5548, 'XAUUSD+', 'sell'), (10140, 5548, 'XAUUSD+', 'sell'), (10140, 5548, 'XAUUSD+', 'sell'), (10140, 5548, 'XAUUSD+', 'sell'), (10140, 5548, 'XAUUSD+', 'sell'), (10140, 5548, 'XAUUSD+', 'sell'), (10142, 5549, 'XAUUSD+', 'sell'), (10142, 5549, 'XAUUSD+', 'sell'), (10142, 5549, 'XAUUSD+', 'sell'), (10144, 5550, 'XAUUSD+', 'sell'), (10144, 5550, 'XAUUSD+', 'sell'), (10144, 5550, 'XAUUSD+', 'sell'), (10144, 5550, 'XAUUSD+', 'sell'), (10144, 5550, 'XAUUSD+', 'sell'), (10144, 5550, 'XAUUSD+', 'sell') + ) AS current_pos(k_id, st_id, symbol, side) + WHERE p.k_id = current_pos.k_id + AND p.st_id = current_pos.st_id + AND p.symbol = current_pos.symbol + AND p.side = current_pos.side + ) + ] +(Background on this error at: https://sqlalche.me/e/20/f405) +2025-12-04 12:24:22 | ERROR | sync.position_sync:sync_batch:43 - 持仓批量同步失败 +2025-12-04 12:24:22 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 12:24:22 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 12:24:28 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 12:24:42 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 12:30:25 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 12:30:25 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 12:30:25 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 12:30:25 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 12:30:25 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 12:30:25 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 12:30:25 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 12:30:25 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 12:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 12:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 12:30:25 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 12:30:25 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 12:30:25 | INFO | sync.manager:start:84 - 第1次同步开始,共 23 个账号 +2025-12-04 12:30:25 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 12:30:25 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 12:30:25 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 12:30:25 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 12:30:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:301 - 准备同步 179 条持仓数据,去重后 21 条唯一记录 +2025-12-04 12:30:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:334 - UPSERT完成: 插入 26 条, 更新 153 条 +2025-12-04 12:30:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:380 - 删除 0 条过期持仓 +2025-12-04 12:30:25 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:384 - 批量同步V3完成: 总数=179, 插入=26, 更新=153, 删除=0 +2025-12-04 12:30:25 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 153 条,插入 26 条,删除 0 条,耗时 0.03秒 +2025-12-04 12:30:25 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 12:30:25 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 12:30:33 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 12:30:45 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 13:36:51 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 13:36:51 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 13:36:51 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 13:36:51 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 13:36:51 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 13:36:51 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 13:36:51 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 13:36:51 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 13:36:51 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 13:36:51 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 13:36:51 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 13:36:51 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 13:36:51 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 13:36:51 | INFO | sync.manager:start:84 - 第1次同步开始,共 23 个账号 +2025-12-04 13:36:51 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 13:36:51 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 13:36:51 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 13:36:51 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 13:36:51 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 13:36:51 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 13:36:51 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 13:36:51 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:269 - 批量同步完成: 总数=179, 插入=26, 更新=153, 删除=0, 错误数=0 +2025-12-04 13:36:51 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 153 条,插入 26 条,删除 0 条,耗时 0.03秒 +2025-12-04 13:36:51 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 13:36:51 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 13:36:58 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 13:36:58 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 13:37:11 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:11:52 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:11:52 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:11:52 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:11:52 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:11:52 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:11:52 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:11:52 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:11:52 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:11:52 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:11:52 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 14:11:52 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:11:52 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 14:11:52 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 14:11:52 | INFO | sync.manager:start:84 - 第1次同步开始,共 23 个账号 +2025-12-04 14:11:52 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 14:11:52 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 14:11:52 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 14:11:52 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 14:11:52 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:86 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 14:11:52 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 14:11:52 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:94 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:11:52 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:269 - 批量同步完成: 总数=179, 插入=26, 更新=153, 删除=0, 错误数=0 +2025-12-04 14:11:52 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 153 条,插入 26 条,删除 0 条,耗时 0.03秒 +2025-12-04 14:11:52 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 14:11:52 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 14:11:58 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:12:12 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:14:06 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:14:06 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:14:06 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:14:06 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:14:06 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:14:06 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:14:06 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:14:06 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:14:06 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:14:06 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 14:14:06 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:14:06 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 14:14:06 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 14:14:06 | INFO | sync.manager:start:84 - 第1次同步开始,共 23 个账号 +2025-12-04 14:14:06 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 14:14:06 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 14:14:06 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 14:14:06 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 14:14:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 14:14:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 14:14:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:14:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:271 - 批量同步完成: 总数=179, 插入=17, 更新=162, 删除=0, 错误数=0 +2025-12-04 14:14:06 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 162 条,插入 17 条,删除 0 条,耗时 0.03秒 +2025-12-04 14:14:06 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 14:14:06 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 14:14:08 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:14:26 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:16:06 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:16:06 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:16:06 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:16:06 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:16:06 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:16:06 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:16:06 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:16:06 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:16:06 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:16:06 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 19 个账号 +2025-12-04 14:16:06 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c02_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:16:06 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c02_strategy_api 解析到 4 个账号 +2025-12-04 14:16:06 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 23 个账号 +2025-12-04 14:16:06 | INFO | sync.manager:start:84 - 第1次同步开始,共 23 个账号 +2025-12-04 14:16:06 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 23 个账号 +2025-12-04 14:16:06 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 23 个账号 +2025-12-04 14:16:06 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 23 个账号 +2025-12-04 14:16:06 | INFO | sync.position_sync:sync_batch:33 - 收集到 179 条持仓数据 +2025-12-04 14:16:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 19 个账号的持仓数据 +2025-12-04 14:16:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [10106, 10113, 10114, 10122, 10124, 10130, 10132, 10137, 10139, 10141] +2025-12-04 14:16:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:16:06 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:271 - 批量同步完成: 总数=179, 插入=17, 更新=162, 删除=0, 错误数=0 +2025-12-04 14:16:06 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 179 条,更新 162 条,插入 17 条,删除 0 条,耗时 0.03秒 +2025-12-04 14:16:06 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 14:16:06 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 14:16:10 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:16:26 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:17:47 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:17:47 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:17:47 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:17:47 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:17:47 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:17:47 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:17:47 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:17:47 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:17:47 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:17:47 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:17:47 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:17:47 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 14:17:47 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:17:47 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:17:47 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:17:47 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:17:47 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:17:47 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:17:47 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:17:47 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:271 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=90, 错误数=0 +2025-12-04 14:17:47 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 90 条,耗时 0.02秒 +2025-12-04 14:17:47 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.03秒 | 平均耗时: 0.00秒 +2025-12-04 14:17:47 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.03 秒,等待 20 秒 +2025-12-04 14:17:55 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:18:07 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:34:36 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:34:36 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:34:36 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:34:36 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:34:36 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:34:36 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:34:36 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:34:36 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:34:36 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:34:36 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:34:36 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:34:36 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 14:34:36 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:34:36 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:34:36 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:34:36 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:34:36 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:34:36 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:34:36 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:34:36 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:272 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=90, 错误数=0 +2025-12-04 14:34:36 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 90 条,耗时 0.02秒 +2025-12-04 14:34:36 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 14:34:36 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 14:34:41 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:34:56 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:37:37 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:37:37 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:37:37 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:37:37 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:37:37 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:37:37 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:37:37 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:37:37 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:37:37 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:37:37 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:37:37 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:37:37 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 14:37:37 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:37:37 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:37:37 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:37:38 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:37:38 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:37:38 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:37:38 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:37:38 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:272 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=0, 错误数=0 +2025-12-04 14:37:38 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 0 条,耗时 0.02秒 +2025-12-04 14:37:38 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 14:37:38 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 14:37:40 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:37:58 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:38:43 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:38:43 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:38:43 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:38:43 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:38:43 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:38:43 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:38:43 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:38:43 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:38:43 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:38:43 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:38:43 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:38:43 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 14:38:43 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:38:43 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:38:43 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:38:43 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:38:43 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:38:43 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:38:43 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:38:43 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:272 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=0, 错误数=0 +2025-12-04 14:38:43 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 0 条,耗时 0.02秒 +2025-12-04 14:38:43 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 14:38:43 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 14:38:47 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:39:03 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 14:39:12 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 14:39:12 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 14:39:12 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 14:39:12 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 14:39:12 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 14:39:12 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 14:39:12 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 14:39:12 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 14:39:12 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:39:12 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:39:12 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:39:12 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 14:39:12 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:39:12 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:39:12 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:39:12 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:39:12 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:39:12 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:39:12 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:39:12 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:272 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=0, 错误数=0 +2025-12-04 14:39:12 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 0 条,耗时 0.02秒 +2025-12-04 14:39:12 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 14:39:12 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 14:39:32 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:39:32 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:39:32 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:39:32 | INFO | sync.manager:start:84 - 第2次同步开始,共 22 个账号 +2025-12-04 14:39:32 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:39:32 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:39:32 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:39:32 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:39:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:39:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:39:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:39:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:272 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=0, 错误数=0 +2025-12-04 14:39:32 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 0 条,耗时 0.02秒 +2025-12-04 14:39:32 | INFO | sync.manager:_update_stats:378 - === 第2次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 14:39:32 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 14:39:52 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:39:52 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:39:52 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:39:52 | INFO | sync.manager:start:84 - 第3次同步开始,共 22 个账号 +2025-12-04 14:39:52 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:39:52 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:39:52 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:39:52 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:39:52 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:39:52 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:39:53 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:39:53 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:272 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=0, 错误数=0 +2025-12-04 14:39:53 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 0 条,耗时 0.02秒 +2025-12-04 14:39:53 | INFO | sync.manager:_update_stats:378 - === 第3次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.01秒 +2025-12-04 14:39:53 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 14:40:13 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 14:40:13 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 14:40:13 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 14:40:13 | INFO | sync.manager:start:84 - 第4次同步开始,共 22 个账号 +2025-12-04 14:40:13 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 14:40:13 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 14:40:13 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 14:40:13 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 14:40:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:88 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 14:40:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 14:40:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:96 - 处理第 2 组账号: [88887] +2025-12-04 14:40:13 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:272 - 批量同步完成: 总数=92, 插入=92, 更新=0, 删除=0, 错误数=0 +2025-12-04 14:40:13 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,更新 0 条,插入 92 条,删除 0 条,耗时 0.02秒 +2025-12-04 14:40:13 | INFO | sync.manager:_update_stats:378 - === 第4次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.01秒 +2025-12-04 14:40:13 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 14:40:28 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 14:40:33 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 15:06:27 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 15:06:27 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 15:06:27 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 15:06:27 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 15:06:27 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 15:06:27 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 15:06:27 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 15:06:27 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 15:06:27 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 15:06:27 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 15:06:27 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 15:06:27 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 15:06:27 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 15:06:27 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 15:06:27 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 15:06:27 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 15:06:27 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:87 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 15:06:27 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 15:06:27 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 2 组账号: [88887] +2025-12-04 15:06:27 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:259 - 批量同步完成: 总数=92, 受影响=92, 删除=0, 错误数=0 +2025-12-04 15:06:27 | ERROR | sync.position_sync:sync_batch:46 - 持仓批量同步失败: 'updated' +2025-12-04 15:06:27 | ERROR | sync.position_sync:sync_batch:53 - 完整堆栈跟踪: +Traceback (most recent call last): + File "/root/project/exchange_monitor_sync/sync/position_sync.py", line 40, in sync_batch + logger.info(f"持仓批量同步完成: 处理 {stats['total']} 条,更新 {stats['updated']} 条," + ~~~~~^^^^^^^^^^^ +KeyError: 'updated' + +2025-12-04 15:06:27 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 15:06:27 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 15:06:29 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 15:06:47 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 15:07:32 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 15:07:32 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 15:07:32 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 15:07:32 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 15:07:32 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 15:07:32 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 15:07:32 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 15:07:32 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 15:07:32 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 15:07:32 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 15:07:32 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 15:07:32 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 15:07:32 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 15:07:32 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 15:07:32 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 15:07:32 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 15:07:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:87 - 开始批量处理 11 个账号的持仓数据 +2025-12-04 15:07:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 1 组账号: [999999, 10107, 10115, 10123, 10125, 10131, 10138, 10140, 10142, 10144] +2025-12-04 15:07:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:95 - 处理第 2 组账号: [88887] +2025-12-04 15:07:32 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized:259 - 批量同步完成: 总数=92, 受影响=92, 删除=0, 错误数=0 +2025-12-04 15:07:32 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,受影响 92 条,删除 0 条,耗时 0.02秒 +2025-12-04 15:07:32 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.02秒 | 平均耗时: 0.00秒 +2025-12-04 15:07:32 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.02 秒,等待 20 秒 +2025-12-04 15:07:51 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 15:07:52 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 15:28:50 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 15:28:50 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 15:28:50 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 15:28:50 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 15:28:50 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 15:28:50 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 15:28:50 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 15:28:50 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 15:28:50 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 15:28:50 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 15:28:50 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 15:28:50 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 15:28:50 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 15:28:50 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 15:28:50 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 15:28:50 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 15:28:50 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:342 - 准备同步 92 条持仓数据,去重后 92 条唯一记录 +2025-12-04 15:28:50 | ERROR | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:430 - 批量同步V3失败: 'inserted' +2025-12-04 15:28:50 | ERROR | sync.position_sync:sync_batch:43 - 持仓批量同步失败 +2025-12-04 15:28:50 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 15:28:50 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.01 秒,等待 20 秒 +2025-12-04 15:28:56 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 15:29:10 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 15:30:55 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 15:30:55 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 15:30:55 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 15:30:55 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 15:30:55 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 15:30:55 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 15:30:55 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 15:30:55 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 15:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 15:30:55 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 15:30:55 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 15:30:55 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 15:30:55 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 15:30:55 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 15:30:55 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 15:30:55 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 15:30:55 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:342 - 准备同步 92 条持仓数据,去重后 92 条唯一记录 +2025-12-04 15:30:55 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:372 - UPSERT完成: 总数 92 条, 受影响 92 条 +2025-12-04 15:30:55 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:418 - 删除 0 条过期持仓 +2025-12-04 15:30:55 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:422 - 批量同步V3完成: 总数=92, 受影响=92, 删除=0 +2025-12-04 15:30:55 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,受影响 92 条,删除 0 条,耗时 0.01秒 +2025-12-04 15:30:55 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 15:30:55 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.01 秒,等待 20 秒 +2025-12-04 15:31:15 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 15:31:15 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 15:31:15 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 15:31:15 | INFO | sync.manager:start:84 - 第2次同步开始,共 22 个账号 +2025-12-04 15:31:15 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 15:31:15 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 15:31:15 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 15:31:15 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 15:31:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:342 - 准备同步 92 条持仓数据,去重后 92 条唯一记录 +2025-12-04 15:31:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:372 - UPSERT完成: 总数 92 条, 受影响 92 条 +2025-12-04 15:31:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:418 - 删除 0 条过期持仓 +2025-12-04 15:31:15 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:422 - 批量同步V3完成: 总数=92, 受影响=92, 删除=0 +2025-12-04 15:31:15 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,受影响 92 条,删除 0 条,耗时 0.01秒 +2025-12-04 15:31:15 | INFO | sync.manager:_update_stats:378 - === 第2次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 15:31:15 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.01 秒,等待 20 秒 +2025-12-04 15:31:35 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 15:31:35 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 15:31:35 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 15:31:35 | INFO | sync.manager:start:84 - 第3次同步开始,共 22 个账号 +2025-12-04 15:31:35 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 15:31:35 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 15:31:35 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 15:31:35 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 15:31:35 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:342 - 准备同步 92 条持仓数据,去重后 92 条唯一记录 +2025-12-04 15:31:35 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:372 - UPSERT完成: 总数 92 条, 受影响 92 条 +2025-12-04 15:31:35 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:418 - 删除 0 条过期持仓 +2025-12-04 15:31:35 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:422 - 批量同步V3完成: 总数=92, 受影响=92, 删除=0 +2025-12-04 15:31:35 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,受影响 92 条,删除 0 条,耗时 0.01秒 +2025-12-04 15:31:35 | INFO | sync.manager:_update_stats:378 - === 第3次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 15:31:35 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.01 秒,等待 20 秒 +2025-12-04 15:31:54 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 15:31:55 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === +2025-12-04 15:32:23 | INFO | __main__:main:27 - === 交易所数据同步服务启动 === +2025-12-04 15:32:23 | INFO | __main__:main:28 - 工作目录: /root/project/exchange_monitor_sync +2025-12-04 15:32:23 | INFO | sync.manager:_get_computer_names:143 - 使用配置的计算机名列表: ['lz_c01', 'lz_c02'] +2025-12-04 15:32:23 | INFO | sync.manager:__init__:39 - 启用持仓批量同步 +2025-12-04 15:32:23 | INFO | sync.manager:__init__:44 - 启用订单批量同步 +2025-12-04 15:32:23 | INFO | sync.manager:__init__:49 - 启用账户信息批量同步 +2025-12-04 15:32:23 | INFO | sync.manager:start:67 - 同步服务启动,间隔 20 秒 +2025-12-04 15:32:23 | INFO | utils.redis_client:_init_connection_pool:44 - Redis连接池初始化成功 +2025-12-04 15:32:23 | INFO | sync.manager:_get_accounts_by_computer_name:161 - 从 lz_c01_strategy_api 获取到 2 个交易所配置 +2025-12-04 15:32:23 | INFO | sync.manager:_get_accounts_by_computer_name:186 - 从 lz_c01_strategy_api 解析到 22 个账号 +2025-12-04 15:32:23 | INFO | sync.manager:get_accounts_from_redis:131 - 从 2 个计算机名获取到 22 个账号 +2025-12-04 15:32:23 | INFO | sync.manager:start:84 - 第1次同步开始,共 22 个账号 +2025-12-04 15:32:23 | INFO | sync.position_sync:sync_batch:22 - 开始批量同步持仓数据,共 22 个账号 +2025-12-04 15:32:23 | INFO | sync.order_sync:sync_batch:22 - 开始批量同步订单数据,共 22 个账号 +2025-12-04 15:32:23 | INFO | sync.account_sync:sync_batch:16 - 开始批量同步账户信息,共 22 个账号 +2025-12-04 15:32:23 | INFO | sync.position_sync:sync_batch:33 - 收集到 92 条持仓数据 +2025-12-04 15:32:23 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:342 - 准备同步 92 条持仓数据,去重后 92 条唯一记录 +2025-12-04 15:32:23 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:372 - UPSERT完成: 总数 92 条, 受影响 92 条 +2025-12-04 15:32:23 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:405 - 删除 0 条过期持仓 +2025-12-04 15:32:23 | INFO | sync.position_sync:_sync_positions_batch_to_db_optimized_v3:409 - 批量同步V3完成: 总数=92, 受影响=92, 删除=0 +2025-12-04 15:32:23 | INFO | sync.position_sync:sync_batch:40 - 持仓批量同步完成: 处理 92 条,受影响 92 条,删除 0 条,耗时 0.01秒 +2025-12-04 15:32:23 | INFO | sync.manager:_update_stats:378 - === 第1次同步统计 === +总耗时: 0.01秒 | 平均耗时: 0.00秒 +2025-12-04 15:32:23 | INFO | sync.manager:start:95 - 同步完成,总耗时 0.01 秒,等待 20 秒 +2025-12-04 15:32:31 | INFO | sync.manager:signal_handler:382 - 接收到信号 2,正在关闭... +2025-12-04 15:32:43 | INFO | __main__:main:41 - === 交易所数据同步服务停止 === diff --git a/models/__pycache__/__init__.cpython-311.pyc b/models/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..714d00f Binary files /dev/null and b/models/__pycache__/__init__.cpython-311.pyc differ diff --git a/models/__pycache__/orm_models.cpython-311.pyc b/models/__pycache__/orm_models.cpython-311.pyc new file mode 100644 index 0000000..84fb4dd Binary files /dev/null and b/models/__pycache__/orm_models.cpython-311.pyc differ diff --git a/sync/__pycache__/__init__.cpython-311.pyc b/sync/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..6e0db87 Binary files /dev/null and b/sync/__pycache__/__init__.cpython-311.pyc differ diff --git a/sync/__pycache__/account_sync.cpython-311.pyc b/sync/__pycache__/account_sync.cpython-311.pyc new file mode 100644 index 0000000..d3bfb8d Binary files /dev/null and b/sync/__pycache__/account_sync.cpython-311.pyc differ diff --git a/sync/__pycache__/base_sync.cpython-311.pyc b/sync/__pycache__/base_sync.cpython-311.pyc new file mode 100644 index 0000000..6bedfc8 Binary files /dev/null and b/sync/__pycache__/base_sync.cpython-311.pyc differ diff --git a/sync/__pycache__/manager.cpython-311.pyc b/sync/__pycache__/manager.cpython-311.pyc new file mode 100644 index 0000000..811e97f Binary files /dev/null and b/sync/__pycache__/manager.cpython-311.pyc differ diff --git a/sync/__pycache__/order_sync.cpython-311.pyc b/sync/__pycache__/order_sync.cpython-311.pyc new file mode 100644 index 0000000..492ac4c Binary files /dev/null and b/sync/__pycache__/order_sync.cpython-311.pyc differ diff --git a/sync/__pycache__/position_sync.cpython-311.pyc b/sync/__pycache__/position_sync.cpython-311.pyc new file mode 100644 index 0000000..81f20b9 Binary files /dev/null and b/sync/__pycache__/position_sync.cpython-311.pyc differ diff --git a/sync/account_sync.py b/sync/account_sync.py index d35ac04..9a7fb7d 100644 --- a/sync/account_sync.py +++ b/sync/account_sync.py @@ -14,7 +14,6 @@ class AccountSyncBatch(BaseSync): """批量同步所有账号的账户信息""" try: logger.info(f"开始批量同步账户信息,共 {len(accounts)} 个账号") - # 收集所有账号的数据 all_account_data = await self._collect_all_account_data(accounts) diff --git a/sync/base_sync.py b/sync/base_sync.py index 265ebe5..802eeed 100644 --- a/sync/base_sync.py +++ b/sync/base_sync.py @@ -16,8 +16,6 @@ class BaseSync(ABC): def __init__(self): self.redis_client = RedisClient() self.db_manager = DatabaseManager() - self.computer_names = self._get_computer_names() - self.computer_name_pattern = re.compile(COMPUTER_NAME_PATTERN) self.sync_stats = { 'total_accounts': 0, 'success_count': 0, @@ -26,14 +24,7 @@ class BaseSync(ABC): 'avg_sync_time': 0 } - def _get_computer_names(self) -> List[str]: - """获取计算机名列表""" - if ',' in COMPUTER_NAMES: - names = [name.strip() for name in COMPUTER_NAMES.split(',')] - logger.info(f"使用配置的计算机名列表: {names}") - return names - return [COMPUTER_NAMES.strip()] - + @abstractmethod async def sync(self): """执行同步(兼容旧接口)""" @@ -44,42 +35,7 @@ class BaseSync(ABC): """批量同步数据""" pass - def _safe_float(self, value: Any, default: float = 0.0) -> float: - """安全转换为float""" - if value is None: - return default - try: - if isinstance(value, str): - value = value.strip() - if value == '': - return default - return float(value) - except (ValueError, TypeError): - return default - - def _safe_int(self, value: Any, default: int = 0) -> int: - """安全转换为int""" - if value is None: - return default - try: - if isinstance(value, str): - value = value.strip() - if value == '': - return default - return int(float(value)) - except (ValueError, TypeError): - return default - - def _safe_str(self, value: Any, default: str = '') -> str: - """安全转换为str""" - if value is None: - return default - try: - result = str(value).strip() - return result if result else default - except: - return default - + def _escape_sql_value(self, value: Any) -> str: """转义SQL值""" if value is None: diff --git a/sync/manager.py b/sync/manager.py index 1d5ae58..45920ee 100644 --- a/sync/manager.py +++ b/sync/manager.py @@ -6,6 +6,7 @@ import time import json from typing import Dict import re +import utils.helpers as helpers from utils.redis_client import RedisClient from config.settings import SYNC_CONFIG @@ -69,21 +70,21 @@ class SyncManager: try: # 获取所有账号(只获取一次) - accounts = await self.get_accounts_from_redis() + accounts = self.get_accounts_from_redis() if not accounts: logger.warning("未获取到任何账号,等待下次同步") await asyncio.sleep(self.sync_interval) continue - + # return self.stats['total_syncs'] += 1 sync_start = time.time() logger.info(f"第{self.stats['total_syncs']}次同步开始,共 {len(accounts)} 个账号") # 执行所有同步器 - tasks = [syncer.sync(accounts) for syncer in self.syncers] + tasks = [syncer.sync_batch(accounts) for syncer in self.syncers] await asyncio.gather(*tasks, return_exceptions=True) @@ -99,6 +100,15 @@ class SyncManager: break except Exception as e: logger.error(f"同步任务异常: {e}") + + # 获取完整的错误信息 + import traceback + error_details = { + 'error_type': type(e).__name__, + 'error_message': str(e), + 'traceback': traceback.format_exc() + } + logger.error("完整堆栈跟踪:\n{traceback}", traceback=error_details['traceback']) await asyncio.sleep(30) def get_accounts_from_redis(self) -> Dict[str, Dict]: @@ -118,7 +128,6 @@ class SyncManager: logger.warning("配置的计算机名未找到数据,尝试自动发现...") accounts_dict = self._discover_all_accounts() - self.sync_stats['total_accounts'] = len(accounts_dict) logger.info(f"从 {len(self.computer_names)} 个计算机名获取到 {len(accounts_dict)} 个账号") return accounts_dict @@ -303,30 +312,17 @@ class SyncManager: """解析账号信息""" try: source_account_info = json.loads(account_info) - + # print(source_account_info) # 基础信息 account_data = { 'exchange_id': exchange_id, 'k_id': account_id, - 'st_id': self._safe_int(source_account_info.get('st_id'), 0), - 'add_time': self._safe_int(source_account_info.get('add_time'), 0), - 'account_type': source_account_info.get('account_type', 'real'), + 'st_id': helpers.safe_int(source_account_info.get('st_id'), 0), + 'add_time': helpers.safe_int(source_account_info.get('add_time'), 0), 'api_key': source_account_info.get('api_key', ''), - 'secret_key': source_account_info.get('secret_key', ''), - 'password': source_account_info.get('password', ''), - 'access_token': source_account_info.get('access_token', ''), - 'remark': source_account_info.get('remark', '') } - # 合并原始信息 - result = {**source_account_info, **account_data} - - # 验证必要字段 - if not result.get('st_id') or not result.get('exchange_id'): - logger.warning(f"账号 {account_id} 缺少必要字段: st_id={result.get('st_id')}, exchange_id={result.get('exchange_id')}") - return None - - return result + return account_data except json.JSONDecodeError as e: logger.error(f"解析账号 {account_id} JSON数据失败: {e}, 原始数据: {account_info[:100]}...") diff --git a/sync/order_sync.py b/sync/order_sync.py index f76c267..903c778 100644 --- a/sync/order_sync.py +++ b/sync/order_sync.py @@ -20,6 +20,7 @@ class OrderSyncBatch(BaseSync): """批量同步所有账号的订单数据""" try: logger.info(f"开始批量同步订单数据,共 {len(accounts)} 个账号") + return start_time = time.time() # 1. 收集所有账号的订单数据 diff --git a/sync/position_sync.py b/sync/position_sync.py index 9e249a1..bdfc0db 100644 --- a/sync/position_sync.py +++ b/sync/position_sync.py @@ -3,6 +3,7 @@ from loguru import logger from typing import List, Dict, Any, Set, Tuple import json import asyncio +import utils.helpers as helpers from datetime import datetime from sqlalchemy import text, and_, select, delete from models.orm_models import StrategyPosition @@ -19,6 +20,7 @@ class PositionSyncBatch(BaseSync): """批量同步所有账号的持仓数据""" try: logger.info(f"开始批量同步持仓数据,共 {len(accounts)} 个账号") + start_time = time.time() # 1. 收集所有账号的持仓数据 @@ -31,18 +33,394 @@ class PositionSyncBatch(BaseSync): logger.info(f"收集到 {len(all_positions)} 条持仓数据") # 2. 批量同步到数据库 - success, stats = await self._sync_positions_batch_to_db(all_positions) + success, stats = await self._sync_positions_batch_to_db_optimized_v3(all_positions) elapsed = time.time() - start_time if success: - logger.info(f"持仓批量同步完成: 处理 {stats['total']} 条,更新 {stats['updated']} 条," - f"插入 {stats['inserted']} 条,删除 {stats['deleted']} 条,耗时 {elapsed:.2f}秒") + logger.info(f"持仓批量同步完成: 处理 {stats['total']} 条,受影响 {stats['affected']} 条," + f"删除 {stats['deleted']} 条,耗时 {elapsed:.2f}秒") else: logger.error("持仓批量同步失败") except Exception as e: - logger.error(f"持仓批量同步失败: {e}") - + logger.error(f"持仓批量同步失败: {e}")# 获取完整的错误信息 + import traceback + error_details = { + 'error_type': type(e).__name__, + 'error_message': str(e), + 'traceback': traceback.format_exc() + } + logger.error("完整堆栈跟踪:\n{traceback}", traceback=error_details['traceback']) + + async def _sync_positions_batch_to_db_optimized(self, all_positions: List[Dict]) -> Tuple[bool, Dict]: + """ + 批量同步持仓数据(不使用临时表) + + Args: + all_positions: 所有持仓数据列表,每个持仓包含k_id(账号ID)等字段 + + Returns: + Tuple[bool, Dict]: (是否成功, 结果统计) + """ + if not all_positions: + return True, {'total': 0, 'affected': 0, 'deleted': 0, 'errors': []} + + + session = self.db_manager.get_session() + + results = { + 'total': 0, + 'affected': 0, + 'deleted': 0, + 'errors': [] + } + + # 按账号分组 + positions_by_account = {} + for position in all_positions: + # print(position['symbol']) + k_id = position['k_id'] + if k_id not in positions_by_account: + positions_by_account[k_id] = [] + positions_by_account[k_id].append(position) + + logger.info(f"开始批量处理 {len(positions_by_account)} 个账号的持仓数据") + + try: + # 按分组处理(10个账号一组) + account_ids = list(positions_by_account.keys()) + + for group_idx in range(0, len(account_ids), 10): + group_account_ids = account_ids[group_idx:group_idx + 10] + logger.info(f"处理第 {group_idx//10 + 1} 组账号: {group_account_ids}") + + # 收集本组所有持仓数据 + group_positions = [] + for k_id in group_account_ids: + group_positions.extend(positions_by_account[k_id]) + + if not group_positions: + continue + + # 处理持仓数据 + processed_positions = [] + account_position_keys = {} # 记录每个账号的持仓标识 + + for raw_position in group_positions: + try: + k_id = raw_position['k_id'] + processed = self._convert_position_data(raw_position) + + # 检查必要字段 + if not all([processed.get('symbol'), processed.get('side')]): + continue + + # 确保st_id存在 + if 'st_id' not in processed: + processed['st_id'] = raw_position.get('st_id', 0) + + # 确保k_id存在 + if 'k_id' not in processed: + processed['k_id'] = k_id + + # 重命名qty为sum(如果存在) + if 'qty' in processed: + processed['sum'] = processed.pop('qty') + + + processed_positions.append(processed) + + # 记录持仓唯一标识 + if k_id not in account_position_keys: + account_position_keys[k_id] = set() + + position_key = f"{processed['st_id']}&{processed['symbol']}&{processed['side']}" + # print(position_key) + account_position_keys[k_id].add(position_key) + + except Exception as e: + logger.error(f"处理持仓数据失败: {raw_position}, error={e}") + continue + + # 批量插入或更新 + if processed_positions: + try: + # 使用ON DUPLICATE KEY UPDATE批量处理 + upsert_sql = text(""" + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES + (:st_id, :k_id, :asset, :symbol, :side, :price, :sum, + :asset_num, :asset_profit, :leverage, :uptime, + :profit_price, :stop_price, :liquidation_price) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + """) + + result = session.execute(upsert_sql, processed_positions) + + # 正确计算插入和更新的数量 + total_affected = result.rowcount # 受影响的总行数 + batch_size = len(processed_positions) # 本次尝试插入的数量 + + # 累加到总结果 + results['total'] += batch_size + results['affected'] += total_affected + + logger.debug(f"第 {group_idx//10 + 1} 组: " + f"处理 {batch_size} 条, " + f"受影响 {total_affected} 条") + + except Exception as e: + logger.error(f"批量插入/更新失败: {e}", exc_info=True) + session.rollback() + results['errors'].append(f"批量插入/更新失败: {str(e)}") + # 继续处理下一组 + continue + + # 删除本组每个账号中已不存在的持仓 + for k_id in group_account_ids: + try: + if k_id not in account_position_keys or not account_position_keys[k_id]: + # 如果该账号没有任何持仓,删除所有 + delete_sql = text(""" + DELETE FROM deh_strategy_position_new + WHERE k_id = :k_id + """) + + result = session.execute(delete_sql, {'k_id': k_id}) + deleted_count = result.rowcount + results['deleted'] += deleted_count + + if deleted_count > 0: + logger.debug(f"账号 {k_id}: 删除所有旧持仓,共 {deleted_count} 条") + + else: + # 构建当前持仓的条件 + current_keys = account_position_keys[k_id] + + # 使用多个OR条件来处理IN子句的限制 + conditions = [] + params = {'k_id': k_id} + + for idx, key in enumerate(current_keys): + parts = key.split('&') + if len(parts) >= 3: # 确保有st_id, symbol, side三部分 + st_id_val = parts[0] + symbol_val = parts[1] + side_val = parts[2] + + conditions.append(f"(st_id = :st_id_{idx} AND symbol = :symbol_{idx} AND side = :side_{idx})") + params[f'st_id_{idx}'] = int(st_id_val) if st_id_val.isdigit() else st_id_val + params[f'symbol_{idx}'] = symbol_val + params[f'side_{idx}'] = side_val + + if conditions: + conditions_str = " OR ".join(conditions) + + # 删除不在当前持仓列表中的记录 + delete_sql = text(f""" + DELETE FROM deh_strategy_position_new + WHERE k_id = :k_id + AND NOT ({conditions_str}) + """) + + result = session.execute(delete_sql, params) + deleted_count = result.rowcount + results['deleted'] += deleted_count + + if deleted_count > 0: + logger.debug(f"账号 {k_id}: 删除 {deleted_count} 条过期持仓") + + except Exception as e: + logger.error(f"删除账号 {k_id} 旧持仓失败: {e}") + # 记录错误但继续处理其他账号 + results['errors'].append(f"删除账号 {k_id} 旧持仓失败: {str(e)}") + + # 每组结束后提交 + try: + session.commit() + logger.debug(f"第 {group_idx//10 + 1} 组处理完成并提交") + except Exception as e: + session.rollback() + logger.error(f"第 {group_idx//10 + 1} 组提交失败: {e}") + results['errors'].append(f"第 {group_idx//10 + 1} 组提交失败: {str(e)}") + + logger.info(f"批量同步完成: " + f"总数={results['total']}, " + f"受影响={results['affected']}, " + f"删除={results['deleted']}, " + f"错误数={len(results['errors'])}") + + + success = len(results['errors']) == 0 + return success, results + + except Exception as e: + session.rollback() + logger.error(f"批量同步过程中发生错误: {e}", exc_info=True) + results['errors'].append(f"同步过程错误: {str(e)}") + return False, results + + finally: + session.close() + + async def _sync_positions_batch_to_db_optimized_v3(self, all_positions: List[Dict]) -> Tuple[bool, Dict]: + """ + 最优化的批量同步(兼容所有MySQL版本) + + 使用策略: + 1. 一次性UPSERT所有持仓数据 + 2. 使用UNION ALL构造虚拟表进行JOIN删除 + + Args: + all_positions: 所有持仓数据列表 + + Returns: + Tuple[bool, Dict]: (是否成功, 结果统计) + """ + if not all_positions: + return True, {'total': 0, 'affected': 0, 'deleted': 0, 'errors': []} + + session = self.db_manager.get_session() + + results = { + 'total': 0, + 'affected': 0, + 'deleted': 0, + 'errors': [] + } + + try: + session.begin() + + # 准备数据 + processed_positions = [] + current_position_records = set() # 使用set去重,避免重复 + + for raw_position in all_positions: + try: + processed = self._convert_position_data(raw_position) + + if not all([processed.get('symbol'), processed.get('side')]): + continue + + if 'qty' in processed: + processed['sum'] = processed.pop('qty') + + k_id = processed.get('k_id', raw_position['k_id']) + st_id = processed.get('st_id', raw_position.get('st_id', 0)) + symbol = processed.get('symbol') + side = processed.get('side') + + + processed_positions.append(processed) + + # 去重记录当前持仓 + record_key = (k_id, st_id, symbol, side) + current_position_records.add(record_key) + + except Exception as e: + logger.error(f"处理持仓数据失败: {raw_position}, error={e}") + continue + + if not processed_positions: + session.commit() + return True, results + + results['total'] = len(processed_positions) + logger.info(f"准备同步 {results['total']} 条持仓数据,去重后 {len(current_position_records)} 条唯一记录") + + # 批量UPSERT + upsert_sql = text(""" + INSERT INTO deh_strategy_position_new + (st_id, k_id, asset, symbol, side, price, `sum`, + asset_num, asset_profit, leverage, uptime, + profit_price, stop_price, liquidation_price) + VALUES + (:st_id, :k_id, :asset, :symbol, :side, :price, :sum, + :asset_num, :asset_profit, :leverage, :uptime, + :profit_price, :stop_price, :liquidation_price) + ON DUPLICATE KEY UPDATE + price = VALUES(price), + `sum` = VALUES(`sum`), + asset_num = VALUES(asset_num), + asset_profit = VALUES(asset_profit), + leverage = VALUES(leverage), + uptime = VALUES(uptime), + profit_price = VALUES(profit_price), + stop_price = VALUES(stop_price), + liquidation_price = VALUES(liquidation_price) + """) + + result = session.execute(upsert_sql, processed_positions) + + total_affected = result.rowcount + + results['affected'] =total_affected + + logger.info(f"UPSERT完成: 总数 {results['total']} 条, 受影响 {results['affected']} 条") + + # 批量删除(使用UNION ALL构造虚拟表) + if current_position_records: + # 构建UNION ALL查询 + union_parts = [] + for record in current_position_records: + k_id, st_id, symbol, side = record + # 转义单引号 + symbol_escaped = symbol.replace("'", "''") + side_escaped = side.replace("'", "''") + union_parts.append(f"SELECT {k_id} as k_id, {st_id} as st_id, '{symbol_escaped}' as symbol, '{side_escaped}' as side") + + if union_parts: + union_sql = " UNION ALL ".join(union_parts) + + # 或者使用LEFT JOIN方式 + delete_sql_join = text(f""" + DELETE p FROM deh_strategy_position_new p + LEFT JOIN ( + {union_sql} + ) AS current_pos ON + p.k_id = current_pos.k_id + AND p.st_id = current_pos.st_id + AND p.symbol = current_pos.symbol + AND p.side = current_pos.side + WHERE current_pos.k_id IS NULL + """) + + result = session.execute(delete_sql_join) + deleted_count = result.rowcount + results['deleted'] = deleted_count + + logger.info(f"删除 {deleted_count} 条过期持仓") + + session.commit() + + logger.info(f"批量同步V3完成: 总数={results['total']}, " + f"受影响={results['affected']}, " + f"删除={results['deleted']}") + + return True, results + + except Exception as e: + session.rollback() + logger.error(f"批量同步V3失败: {e}", exc_info=True) + results['errors'].append(f"同步失败: {str(e)}") + return False, results + + finally: + session.close() + async def _collect_all_positions(self, accounts: Dict[str, Dict]) -> List[Dict]: """收集所有账号的持仓数据""" all_positions = [] @@ -117,6 +495,7 @@ class PositionSyncBatch(BaseSync): # 添加账号信息 for position in positions: + # print(position['symbol']) position['k_id'] = k_id position['st_id'] = st_id position['exchange_id'] = exchange_id @@ -126,247 +505,26 @@ class PositionSyncBatch(BaseSync): except Exception as e: logger.error(f"获取Redis持仓数据失败: k_id={k_id}, error={e}") return [] - - async def _sync_positions_batch_to_db(self, all_positions: List[Dict]) -> Tuple[bool, Dict]: - """批量同步持仓数据到数据库""" - try: - if not all_positions: - return True, {'total': 0, 'updated': 0, 'inserted': 0, 'deleted': 0} - - # 按账号分组 - positions_by_account = {} - for position in all_positions: - k_id = position['k_id'] - if k_id not in positions_by_account: - positions_by_account[k_id] = [] - positions_by_account[k_id].append(position) - - logger.info(f"开始批量处理 {len(positions_by_account)} 个账号的持仓数据") - - # 批量处理每个账号 - total_stats = {'total': 0, 'updated': 0, 'inserted': 0, 'deleted': 0} - - for k_id, positions in positions_by_account.items(): - st_id = positions[0]['st_id'] if positions else 0 - - # 处理单个账号的批量同步 - success, stats = await self._sync_single_account_batch(k_id, st_id, positions) - - if success: - total_stats['total'] += stats['total'] - total_stats['updated'] += stats['updated'] - total_stats['inserted'] += stats['inserted'] - total_stats['deleted'] += stats['deleted'] - - return True, total_stats - - except Exception as e: - logger.error(f"批量同步持仓到数据库失败: {e}") - return False, {'total': 0, 'updated': 0, 'inserted': 0, 'deleted': 0} - - async def _sync_single_account_batch(self, k_id: int, st_id: int, positions: List[Dict]) -> Tuple[bool, Dict]: - """批量同步单个账号的持仓数据""" - session = self.db_manager.get_session() - try: - # 准备数据 - insert_data = [] - new_positions_map = {} # (symbol, side) -> position_id (用于删除) - - for position_data in positions: - try: - position_dict = self._convert_position_data(position_data) - if not all([position_dict.get('symbol'), position_dict.get('side')]): - continue - - symbol = position_dict['symbol'] - side = position_dict['side'] - key = (symbol, side) - - # 重命名qty为sum - if 'qty' in position_dict: - position_dict['sum'] = position_dict.pop('qty') - - insert_data.append(position_dict) - new_positions_map[key] = position_dict.get('id') # 如果有id的话 - - except Exception as e: - logger.error(f"转换持仓数据失败: {position_data}, error={e}") - continue - - with session.begin(): - if not insert_data: - # 清空该账号所有持仓 - result = session.execute( - delete(StrategyPosition).where( - and_( - StrategyPosition.k_id == k_id, - StrategyPosition.st_id == st_id - ) - ) - ) - deleted_count = result.rowcount - - return True, { - 'total': 0, - 'updated': 0, - 'inserted': 0, - 'deleted': deleted_count - } - - # 1. 批量插入/更新持仓数据 - processed_count = self._batch_upsert_positions(session, insert_data) - - # 2. 批量删除多余持仓 - deleted_count = self._batch_delete_extra_positions(session, k_id, st_id, new_positions_map) - - # 注意:这里无法区分插入和更新的数量,processed_count是总处理数 - inserted_count = processed_count # 简化处理 - updated_count = 0 # 需要更复杂的逻辑来区分 - - stats = { - 'total': len(insert_data), - 'updated': updated_count, - 'inserted': inserted_count, - 'deleted': deleted_count - } - - return True, stats - - except Exception as e: - logger.error(f"批量同步账号 {k_id} 持仓失败: {e}") - return False, {'total': 0, 'updated': 0, 'inserted': 0, 'deleted': 0} - finally: - session.close() - - def _batch_upsert_positions(self, session, insert_data: List[Dict]) -> int: - """批量插入/更新持仓数据""" - try: - # 分块处理 - chunk_size = self.batch_size - total_processed = 0 - - for i in range(0, len(insert_data), chunk_size): - chunk = insert_data[i:i + chunk_size] - - values_list = [] - for data in chunk: - symbol = data.get('symbol').replace("'", "''") if data.get('symbol') else '' - values = ( - f"({data['st_id']}, {data['k_id']}, '{data.get('asset', 'USDT')}', " - f"'{symbol}', " - f"{data.get('price') or 'NULL'}, {data.get('sum') or 'NULL'}, " - f"{data.get('asset_num') or 'NULL'}, {data.get('asset_profit') or 'NULL'}, " - f"{data.get('leverage') or 'NULL'}, {data.get('uptime') or 'NULL'}, " - f"{data.get('profit_price') or 'NULL'}, {data.get('stop_price') or 'NULL'}, " - f"{data.get('liquidation_price') or 'NULL'})" - ) - values_list.append(values) - - if values_list: - values_str = ", ".join(values_list) - - sql = f""" - INSERT INTO deh_strategy_position_new - (st_id, k_id, asset, symbol, side, price, `sum`, - asset_num, asset_profit, leverage, uptime, - profit_price, stop_price, liquidation_price) - VALUES {values_str} - ON DUPLICATE KEY UPDATE - price = VALUES(price), - `sum` = VALUES(`sum`), - asset_num = VALUES(asset_num), - asset_profit = VALUES(asset_profit), - leverage = VALUES(leverage), - uptime = VALUES(uptime), - profit_price = VALUES(profit_price), - stop_price = VALUES(stop_price), - liquidation_price = VALUES(liquidation_price) - """ - - session.execute(text(sql)) - total_processed += len(chunk) - - return total_processed - - except Exception as e: - logger.error(f"批量插入/更新持仓失败: {e}") - raise - - def _batch_delete_extra_positions(self, session, k_id: int, st_id: int, new_positions_map: Dict) -> int: - """批量删除多余持仓""" - try: - if not new_positions_map: - # 删除所有持仓 - result = session.execute( - delete(StrategyPosition).where( - and_( - StrategyPosition.k_id == k_id, - StrategyPosition.st_id == st_id - ) - ) - ) - return result.rowcount - - # 构建保留条件 - conditions = [] - for (symbol, side) in new_positions_map.keys(): - safe_symbol = symbol.replace("'", "''") if symbol else '' - safe_side = side.replace("'", "''") if side else '' - conditions.append(f"(symbol = '{safe_symbol}' AND side = '{safe_side}')") - - if conditions: - conditions_str = " OR ".join(conditions) - - sql = f""" - DELETE FROM deh_strategy_position_new - WHERE k_id = {k_id} AND st_id = {st_id} - AND NOT ({conditions_str}) - """ - - result = session.execute(text(sql)) - return result.rowcount - - return 0 - - except Exception as e: - logger.error(f"批量删除持仓失败: k_id={k_id}, error={e}") - return 0 - + def _convert_position_data(self, data: Dict) -> Dict: """转换持仓数据格式""" try: - # 安全转换函数 - def safe_float(value, default=None): - if value is None: - return default - try: - return float(value) - except (ValueError, TypeError): - return default - - def safe_int(value, default=None): - if value is None: - return default - try: - return int(float(value)) - except (ValueError, TypeError): - return default return { - 'st_id': safe_int(data.get('st_id'), 0), - 'k_id': safe_int(data.get('k_id'), 0), + 'st_id': helpers.safe_int(data.get('st_id'), 0), + 'k_id': helpers.safe_int(data.get('k_id'), 0), 'asset': data.get('asset', 'USDT'), 'symbol': data.get('symbol', ''), 'side': data.get('side', ''), - 'price': safe_float(data.get('price')), - 'qty': safe_float(data.get('qty')), # 后面会重命名为sum - 'asset_num': safe_float(data.get('asset_num')), - 'asset_profit': safe_float(data.get('asset_profit')), - 'leverage': safe_int(data.get('leverage')), - 'uptime': safe_int(data.get('uptime')), - 'profit_price': safe_float(data.get('profit_price')), - 'stop_price': safe_float(data.get('stop_price')), - 'liquidation_price': safe_float(data.get('liquidation_price')) + 'price': helpers.safe_float(data.get('price')), + 'qty': helpers.safe_float(data.get('qty')), # 后面会重命名为sum + 'asset_num': helpers.safe_float(data.get('asset_num')), + 'asset_profit': helpers.safe_float(data.get('asset_profit')), + 'leverage': helpers.safe_int(data.get('leverage')), + 'uptime': helpers.safe_int(data.get('uptime')), + 'profit_price': helpers.safe_float(data.get('profit_price')), + 'stop_price': helpers.safe_float(data.get('stop_price')), + 'liquidation_price': helpers.safe_float(data.get('liquidation_price')) } except Exception as e: diff --git a/utils/__pycache__/__init__.cpython-311.pyc b/utils/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000..4eb61a9 Binary files /dev/null and b/utils/__pycache__/__init__.cpython-311.pyc differ diff --git a/utils/__pycache__/database_manager.cpython-311.pyc b/utils/__pycache__/database_manager.cpython-311.pyc new file mode 100644 index 0000000..e5a6b54 Binary files /dev/null and b/utils/__pycache__/database_manager.cpython-311.pyc differ diff --git a/utils/__pycache__/helpers.cpython-311.pyc b/utils/__pycache__/helpers.cpython-311.pyc new file mode 100644 index 0000000..1f1540e Binary files /dev/null and b/utils/__pycache__/helpers.cpython-311.pyc differ diff --git a/utils/__pycache__/redis_batch_helper.cpython-311.pyc b/utils/__pycache__/redis_batch_helper.cpython-311.pyc new file mode 100644 index 0000000..61e610e Binary files /dev/null and b/utils/__pycache__/redis_batch_helper.cpython-311.pyc differ diff --git a/utils/__pycache__/redis_client.cpython-311.pyc b/utils/__pycache__/redis_client.cpython-311.pyc new file mode 100644 index 0000000..5fdf82e Binary files /dev/null and b/utils/__pycache__/redis_client.cpython-311.pyc differ diff --git a/utils/database_manager.py b/utils/database_manager.py index 029728e..4e62237 100644 --- a/utils/database_manager.py +++ b/utils/database_manager.py @@ -56,7 +56,7 @@ class DatabaseManager: # 创建表(如果不存在) Base.metadata.create_all(self._engine) - logger.info("SQLAlchemy数据库引擎初始化成功") + # logger.info("SQLAlchemy数据库引擎初始化成功") except Exception as e: logger.error(f"数据库引擎初始化失败: {e}") diff --git a/utils/helpers.py b/utils/helpers.py index e69de29..631f336 100644 --- a/utils/helpers.py +++ b/utils/helpers.py @@ -0,0 +1,31 @@ +from typing import List, Dict, Optional, Any +from loguru import logger + + +def safe_float(value, default=0.0): + """安全转换为float,处理None和空值""" + if value is None: + return default + try: + return float(value) + except (ValueError, TypeError): + return default + +def safe_int(value, default=0): + """安全转换为int""" + if value is None: + return default + try: + return int(float(value)) + except (ValueError, TypeError): + return default + +def safe_str(self, value: Any, default: str = '') -> str: + """安全转换为str""" + if value is None: + return "" + try: + return str(value) + except Exception as e: + logger.error(f"safe_str error: {e}") + return ""