From 6504efbf154329160e91e982746c2911f69b6bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Fri, 23 Jan 2026 23:46:29 +0800 Subject: [PATCH] a --- trading_system/config.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/trading_system/config.py b/trading_system/config.py index eb92a68..cf735f3 100644 --- a/trading_system/config.py +++ b/trading_system/config.py @@ -8,6 +8,8 @@ from typing import Optional from pathlib import Path # 加载 .env 文件(优先从 trading_system/.env,其次从 backend/.env,再到项目根目录/.env) +# 重要:对于 ATS_ACCOUNT_ID,如果 supervisor 已设置(交易进程),则不要从 .env 覆盖 +# .env 中的 ATS_ACCOUNT_ID 只用于 recommendations_main.py 的默认值 try: from dotenv import load_dotenv trading_system_dir = Path(__file__).parent @@ -18,14 +20,26 @@ try: backend_dir / '.env', # backend/.env(线上常见放这里:DB/REDIS/ATS_MASTER_KEY) project_root / '.env', # 项目根目录/.env ] + # 先保存 supervisor 设置的 ATS_ACCOUNT_ID(如果存在) + # supervisor 在启动交易进程时会设置这个环境变量,优先级应该高于 .env + supervisor_account_id = os.getenv("ATS_ACCOUNT_ID") + for env_file in env_files: if env_file.exists(): + # 加载 .env 文件(会覆盖环境变量) load_dotenv(env_file, override=True) print(f"[config.py] 已加载 .env 文件: {env_file}") + # 如果 supervisor 设置了 ATS_ACCOUNT_ID,恢复它(交易进程使用 supervisor 的值,不依赖 .env) + if supervisor_account_id: + os.environ["ATS_ACCOUNT_ID"] = supervisor_account_id + print(f"[config.py] 恢复 supervisor 设置的 ATS_ACCOUNT_ID={supervisor_account_id}(交易进程使用此值,不依赖 .env)") break else: # 如果都不存在,尝试加载但不报错 load_dotenv(project_root / '.env', override=False) + # 同样恢复 supervisor 设置的值 + if supervisor_account_id: + os.environ["ATS_ACCOUNT_ID"] = supervisor_account_id except ImportError: # python-dotenv 未安装时忽略 pass