a
This commit is contained in:
parent
8667c07134
commit
4c5d040746
|
|
@ -28,11 +28,11 @@ try:
|
||||||
if env_file.exists():
|
if env_file.exists():
|
||||||
# 加载 .env 文件(会覆盖环境变量)
|
# 加载 .env 文件(会覆盖环境变量)
|
||||||
load_dotenv(env_file, override=True)
|
load_dotenv(env_file, override=True)
|
||||||
print(f"[config.py] 已加载 .env 文件: {env_file}")
|
# logger.debug(f"[config.py] 已加载 .env 文件: {env_file}") # 调试信息,已禁用
|
||||||
# 如果 supervisor 设置了 ATS_ACCOUNT_ID,恢复它(交易进程使用 supervisor 的值,不依赖 .env)
|
# 如果 supervisor 设置了 ATS_ACCOUNT_ID,恢复它(交易进程使用 supervisor 的值,不依赖 .env)
|
||||||
if supervisor_account_id:
|
if supervisor_account_id:
|
||||||
os.environ["ATS_ACCOUNT_ID"] = supervisor_account_id
|
os.environ["ATS_ACCOUNT_ID"] = supervisor_account_id
|
||||||
print(f"[config.py] 恢复 supervisor 设置的 ATS_ACCOUNT_ID={supervisor_account_id}(交易进程使用此值,不依赖 .env)")
|
# logger.debug(f"[config.py] 恢复 supervisor 设置的 ATS_ACCOUNT_ID={supervisor_account_id}(交易进程使用此值,不依赖 .env)") # 调试信息,已禁用
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise Exception("supervisor 未设置 ATS_ACCOUNT_ID")
|
raise Exception("supervisor 未设置 ATS_ACCOUNT_ID")
|
||||||
|
|
@ -46,7 +46,7 @@ except ImportError:
|
||||||
pass
|
pass
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# 加载 .env 文件失败时忽略,不影响程序运行
|
# 加载 .env 文件失败时忽略,不影响程序运行
|
||||||
print(f"[config.py] 加载ATS_ACCOUNT_ID时出错: {e}")
|
# logger.warning(f"[config.py] 加载ATS_ACCOUNT_ID时出错: {e}") # 调试信息,已禁用
|
||||||
|
|
||||||
# 尝试从数据库加载配置
|
# 尝试从数据库加载配置
|
||||||
USE_DB_CONFIG = False
|
USE_DB_CONFIG = False
|
||||||
|
|
@ -58,7 +58,8 @@ def _init_config_manager():
|
||||||
if _config_manager is not None:
|
if _config_manager is not None:
|
||||||
return _config_manager
|
return _config_manager
|
||||||
|
|
||||||
# 使用基础日志(因为可能还没有配置好日志系统)
|
# ⚠️ 2026-01-27修复:移除所有print语句,避免污染日志格式
|
||||||
|
# 只在错误时使用stderr输出,正常初始化过程静默处理
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
@ -67,25 +68,17 @@ def _init_config_manager():
|
||||||
project_root = Path(__file__).parent.parent
|
project_root = Path(__file__).parent.parent
|
||||||
backend_path = project_root / 'backend'
|
backend_path = project_root / 'backend'
|
||||||
|
|
||||||
print(f"[配置管理器] 尝试初始化,项目根目录: {project_root}")
|
|
||||||
print(f"[配置管理器] backend路径: {backend_path}")
|
|
||||||
print(f"[配置管理器] backend目录存在: {backend_path.exists()}")
|
|
||||||
|
|
||||||
if not backend_path.exists():
|
if not backend_path.exists():
|
||||||
print(f"[配置管理器] ❌ backend目录不存在: {backend_path}")
|
# 只在错误时输出到stderr,不影响正常日志
|
||||||
|
print(f"[配置管理器] ❌ backend目录不存在: {backend_path}", file=sys.stderr)
|
||||||
USE_DB_CONFIG = False
|
USE_DB_CONFIG = False
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# 检查backend目录内容
|
|
||||||
backend_files = list(backend_path.iterdir()) if backend_path.exists() else []
|
|
||||||
print(f"[配置管理器] backend目录内容: {[f.name for f in backend_files[:10]]}")
|
|
||||||
|
|
||||||
# 检查config_manager.py是否存在
|
# 检查config_manager.py是否存在
|
||||||
config_manager_file = backend_path / 'config_manager.py'
|
config_manager_file = backend_path / 'config_manager.py'
|
||||||
print(f"[配置管理器] config_manager.py存在: {config_manager_file.exists()}")
|
|
||||||
|
|
||||||
if not config_manager_file.exists():
|
if not config_manager_file.exists():
|
||||||
print(f"[配置管理器] ❌ config_manager.py不存在: {config_manager_file}")
|
print(f"[配置管理器] ❌ config_manager.py不存在: {config_manager_file}", file=sys.stderr)
|
||||||
USE_DB_CONFIG = False
|
USE_DB_CONFIG = False
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -93,78 +86,70 @@ def _init_config_manager():
|
||||||
backend_str = str(backend_path)
|
backend_str = str(backend_path)
|
||||||
if backend_str not in sys.path:
|
if backend_str not in sys.path:
|
||||||
sys.path.insert(0, backend_str)
|
sys.path.insert(0, backend_str)
|
||||||
print(f"[配置管理器] 已添加路径到sys.path: {backend_str}")
|
|
||||||
|
|
||||||
# 尝试导入
|
# 尝试导入
|
||||||
try:
|
try:
|
||||||
print("[配置管理器] 尝试导入config_manager...")
|
|
||||||
from config_manager import ConfigManager # type: ignore
|
from config_manager import ConfigManager # type: ignore
|
||||||
print("[配置管理器] ✓ 导入成功")
|
|
||||||
|
|
||||||
# 从环境变量获取 account_id(trading_system 进程通过 ATS_ACCOUNT_ID 指定)
|
# 从环境变量获取 account_id(trading_system 进程通过 ATS_ACCOUNT_ID 指定)
|
||||||
try:
|
try:
|
||||||
account_id = int(os.getenv("ATS_ACCOUNT_ID") or os.getenv("ACCOUNT_ID") or 1)
|
account_id = int(os.getenv("ATS_ACCOUNT_ID") or os.getenv("ACCOUNT_ID") or 1)
|
||||||
except Exception:
|
except Exception:
|
||||||
account_id = 1
|
account_id = 1
|
||||||
print(f"[配置管理器] 使用 account_id={account_id} (从环境变量 ATS_ACCOUNT_ID 读取)")
|
|
||||||
|
|
||||||
# 为当前账号创建 ConfigManager 实例(而不是使用全局的)
|
# 为当前账号创建 ConfigManager 实例(而不是使用全局的)
|
||||||
config_manager = ConfigManager.for_account(account_id)
|
config_manager = ConfigManager.for_account(account_id)
|
||||||
print(f"[配置管理器] ✓ 已创建 ConfigManager 实例 (account_id={account_id})")
|
|
||||||
|
|
||||||
# 测试数据库连接
|
# 测试数据库连接
|
||||||
try:
|
try:
|
||||||
print("[配置管理器] 测试数据库连接...")
|
|
||||||
config_manager.reload()
|
config_manager.reload()
|
||||||
print(f"[配置管理器] ✓ 数据库连接成功,已加载 {len(config_manager._cache)} 个配置项")
|
# 成功时使用logger输出(此时日志系统应该已初始化)
|
||||||
|
import logging
|
||||||
# 检查API密钥(使用正确的 account_id)
|
try:
|
||||||
api_key = config_manager.get('BINANCE_API_KEY')
|
logger = logging.getLogger(__name__)
|
||||||
api_secret = config_manager.get('BINANCE_API_SECRET')
|
logger.info(f"[配置管理器] ✓ 数据库连接成功,已加载 {len(config_manager._cache)} 个配置项")
|
||||||
print(f"[配置管理器] API密钥检查: KEY存在={bool(api_key)}, SECRET存在={bool(api_secret)}")
|
logger.info("[配置管理器] ✓ 配置管理器初始化成功,将从数据库读取配置")
|
||||||
if api_key and api_key != 'your_api_key_here':
|
except Exception:
|
||||||
print(f"[配置管理器] API_KEY前4位: {api_key[:4]}...")
|
# 如果日志系统还未初始化,静默处理
|
||||||
|
pass
|
||||||
|
|
||||||
_config_manager = config_manager
|
_config_manager = config_manager
|
||||||
USE_DB_CONFIG = True
|
USE_DB_CONFIG = True
|
||||||
print("[配置管理器] ✓ 配置管理器初始化成功,将从数据库读取配置")
|
|
||||||
return config_manager
|
return config_manager
|
||||||
except Exception as db_error:
|
except Exception as db_error:
|
||||||
print(f"[配置管理器] ⚠ 数据库连接失败: {db_error}")
|
# 错误时输出到stderr,不影响正常日志
|
||||||
print(f"[配置管理器] 错误类型: {type(db_error).__name__}")
|
print(f"[配置管理器] ⚠ 数据库连接失败: {db_error}", file=sys.stderr)
|
||||||
import traceback
|
|
||||||
print(f"[配置管理器] 错误详情:\n{traceback.format_exc()}")
|
|
||||||
USE_DB_CONFIG = False
|
USE_DB_CONFIG = False
|
||||||
return None
|
return None
|
||||||
|
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
print(f"[配置管理器] ❌ 无法导入config_manager: {e}")
|
print(f"[配置管理器] ❌ 无法导入config_manager: {e}", file=sys.stderr)
|
||||||
import traceback
|
|
||||||
print(f"[配置管理器] 导入错误详情:\n{traceback.format_exc()}")
|
|
||||||
USE_DB_CONFIG = False
|
USE_DB_CONFIG = False
|
||||||
return None
|
return None
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[配置管理器] ❌ 配置管理器初始化失败: {e}")
|
|
||||||
import traceback
|
import traceback
|
||||||
print(f"[配置管理器] 错误详情:\n{traceback.format_exc()}")
|
print(f"[配置管理器] ❌ 配置管理器初始化失败: {e}", file=sys.stderr)
|
||||||
|
print(traceback.format_exc(), file=sys.stderr)
|
||||||
USE_DB_CONFIG = False
|
USE_DB_CONFIG = False
|
||||||
return None
|
return None
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[配置管理器] ❌ 初始化异常: {e}")
|
|
||||||
import traceback
|
import traceback
|
||||||
print(f"[配置管理器] 异常详情:\n{traceback.format_exc()}")
|
print(f"[配置管理器] ❌ 初始化异常: {e}", file=sys.stderr)
|
||||||
|
print(traceback.format_exc(), file=sys.stderr)
|
||||||
USE_DB_CONFIG = False
|
USE_DB_CONFIG = False
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# 初始化配置管理器(在模块加载时执行)
|
# 初始化配置管理器(在模块加载时执行)
|
||||||
# 注意:此时日志系统可能还没初始化,所以使用print输出
|
# ⚠️ 2026-01-27修复:静默初始化,只在错误时输出到stderr,避免污染日志格式
|
||||||
try:
|
try:
|
||||||
_init_config_manager()
|
_init_config_manager()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[config.py] 配置管理器初始化异常: {e}")
|
# 错误时输出到stderr,不影响正常日志
|
||||||
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
print(traceback.format_exc())
|
print(f"[config.py] 配置管理器初始化异常: {e}", file=sys.stderr)
|
||||||
|
print(traceback.format_exc(), file=sys.stderr)
|
||||||
|
|
||||||
def _get_config_value(key, default=None):
|
def _get_config_value(key, default=None):
|
||||||
"""获取配置值(支持动态重载)"""
|
"""获取配置值(支持动态重载)"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user