update
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
# Alpha表达式模拟系统 - 项目地图
|
||||||
|
|
||||||
|
### 模拟服务项目 (8005端口)
|
||||||
|
|
||||||
|
alpha-simulator/
|
||||||
|
├── main.py # 模拟服务主程序
|
||||||
|
├── core/
|
||||||
|
│ └── simulator.py # 核心模拟逻辑
|
||||||
|
├── auth/
|
||||||
|
│ └── auth_service.py # 认证服务
|
||||||
|
├── database/
|
||||||
|
│ └── db_manager.py # 数据库操作
|
||||||
|
└── requirements.txt # Python依赖
|
||||||
+2
-2
@@ -9,8 +9,8 @@ class Settings:
|
|||||||
|
|
||||||
# 数据库配置
|
# 数据库配置
|
||||||
DATABASE_CONFIG = {
|
DATABASE_CONFIG = {
|
||||||
"host": "192.168.31.201",
|
# "host": "192.168.31.201",
|
||||||
# "host": "127.0.0.1",
|
"host": "127.0.0.1",
|
||||||
"port": "5432",
|
"port": "5432",
|
||||||
"user": "jack",
|
"user": "jack",
|
||||||
"password": "aaaAAA111",
|
"password": "aaaAAA111",
|
||||||
|
|||||||
@@ -14,8 +14,10 @@ app = FastAPI(
|
|||||||
|
|
||||||
# 全局变量
|
# 全局变量
|
||||||
_simulator = None
|
_simulator = None
|
||||||
_last_result = None # 存储上次执行结果
|
_last_result = None
|
||||||
_is_processing = False # 是否正在处理
|
_is_processing = False
|
||||||
|
_token_expiry_time = 0 # token过期时间戳
|
||||||
|
_TOKEN_REFRESH_THRESHOLD = 1800 # 30分钟刷新阈值
|
||||||
|
|
||||||
|
|
||||||
def initialize_simulator():
|
def initialize_simulator():
|
||||||
@@ -28,6 +30,27 @@ def initialize_simulator():
|
|||||||
return _simulator
|
return _simulator
|
||||||
|
|
||||||
|
|
||||||
|
def check_and_refresh_token():
|
||||||
|
"""检查并刷新token"""
|
||||||
|
global _token_expiry_time, _simulator
|
||||||
|
|
||||||
|
current_time = time.time()
|
||||||
|
|
||||||
|
# 如果token即将过期(剩余时间少于30分钟),则刷新
|
||||||
|
if current_time >= _token_expiry_time - _TOKEN_REFRESH_THRESHOLD:
|
||||||
|
print("token即将过期,重新登录...")
|
||||||
|
_simulator.login()
|
||||||
|
|
||||||
|
# 更新token过期时间(假设token有效期14400秒)
|
||||||
|
_token_expiry_time = current_time + 14400
|
||||||
|
print(f"token已刷新,有效期至: {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(_token_expiry_time))}")
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
remaining = int(_token_expiry_time - current_time)
|
||||||
|
print(f"token仍然有效,剩余时间: {remaining // 3600}小时{(remaining % 3600) // 60}分钟")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
@app.get("/")
|
@app.get("/")
|
||||||
async def root():
|
async def root():
|
||||||
"""根路径,返回服务信息"""
|
"""根路径,返回服务信息"""
|
||||||
@@ -49,11 +72,11 @@ async def run_simulation():
|
|||||||
"""
|
"""
|
||||||
触发一次模拟执行
|
触发一次模拟执行
|
||||||
执行顺序:
|
执行顺序:
|
||||||
1. 刷新token
|
1. 检查token并刷新
|
||||||
2. 加载alpha列表
|
2. 加载alpha列表
|
||||||
3. 执行批量模拟
|
3. 执行批量模拟
|
||||||
"""
|
"""
|
||||||
global _is_processing, _last_result
|
global _is_processing, _last_result, _simulator, _token_expiry_time
|
||||||
|
|
||||||
# 检查是否正在处理
|
# 检查是否正在处理
|
||||||
if _is_processing:
|
if _is_processing:
|
||||||
@@ -69,9 +92,16 @@ async def run_simulation():
|
|||||||
# 初始化模拟器
|
# 初始化模拟器
|
||||||
simulator = initialize_simulator()
|
simulator = initialize_simulator()
|
||||||
|
|
||||||
# 1. 刷新token
|
# 1. 检查并刷新token(只在需要时)
|
||||||
print("刷新token...")
|
print("检查token状态...")
|
||||||
simulator.login()
|
if _token_expiry_time == 0:
|
||||||
|
# 第一次运行,需要登录
|
||||||
|
print("首次运行,进行登录...")
|
||||||
|
simulator.login()
|
||||||
|
_token_expiry_time = time.time() + 14400
|
||||||
|
print("登录成功")
|
||||||
|
else:
|
||||||
|
check_and_refresh_token()
|
||||||
|
|
||||||
# 2. 加载alpha列表
|
# 2. 加载alpha列表
|
||||||
print("加载alpha列表...")
|
print("加载alpha列表...")
|
||||||
@@ -139,10 +169,20 @@ async def get_last_result():
|
|||||||
@app.get("/status")
|
@app.get("/status")
|
||||||
async def get_status():
|
async def get_status():
|
||||||
"""获取服务状态"""
|
"""获取服务状态"""
|
||||||
|
global _token_expiry_time
|
||||||
|
|
||||||
|
token_valid = False
|
||||||
|
if _token_expiry_time > 0:
|
||||||
|
remaining_time = _token_expiry_time - time.time()
|
||||||
|
token_valid = remaining_time > 0
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
"status": "running",
|
||||||
"is_processing": _is_processing,
|
"is_processing": _is_processing,
|
||||||
"simulator_initialized": _simulator is not None,
|
"simulator_initialized": _simulator is not None,
|
||||||
"has_last_result": _last_result is not None,
|
"has_last_result": _last_result is not None,
|
||||||
|
"token_valid": token_valid,
|
||||||
|
"token_expires_in": int(_token_expiry_time - time.time()) if _token_expiry_time > 0 else 0,
|
||||||
"timestamp": time.time()
|
"timestamp": time.time()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,7 +193,8 @@ async def health_check():
|
|||||||
return {
|
return {
|
||||||
"status": "healthy",
|
"status": "healthy",
|
||||||
"timestamp": time.time(),
|
"timestamp": time.time(),
|
||||||
"simulator_initialized": _simulator is not None
|
"simulator_initialized": _simulator is not None,
|
||||||
|
"token_valid": _token_expiry_time > time.time() if _token_expiry_time > 0 else False
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -168,6 +209,6 @@ if __name__ == "__main__":
|
|||||||
uvicorn.run(
|
uvicorn.run(
|
||||||
app,
|
app,
|
||||||
host="0.0.0.0",
|
host="0.0.0.0",
|
||||||
port=8000,
|
port=8005,
|
||||||
log_level="info"
|
log_level="info"
|
||||||
)
|
)
|
||||||
Reference in New Issue
Block a user