This commit is contained in:
薇薇安 2026-01-23 23:46:29 +08:00
parent fb3d1a0dda
commit 6504efbf15

View File

@ -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