This commit is contained in:
aaron 2026-02-20 15:31:57 +08:00
parent f9d09fefca
commit e4f5527f64

View File

@ -17,6 +17,7 @@ import os
_price_monitor_task = None _price_monitor_task = None
_report_task = None _report_task = None
_stock_agent_task = None _stock_agent_task = None
_crypto_agent_task = None
async def price_monitor_loop(): async def price_monitor_loop():
@ -148,7 +149,7 @@ async def periodic_report_loop():
@asynccontextmanager @asynccontextmanager
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI):
"""应用生命周期管理""" """应用生命周期管理"""
global _price_monitor_task, _report_task, _stock_agent_task global _price_monitor_task, _report_task, _stock_agent_task, _crypto_agent_task
# 启动时执行 # 启动时执行
logger.info("应用启动") logger.info("应用启动")
@ -162,6 +163,15 @@ async def lifespan(app: FastAPI):
_report_task = asyncio.create_task(periodic_report_loop()) _report_task = asyncio.create_task(periodic_report_loop())
logger.info("定时报告任务已创建") logger.info("定时报告任务已创建")
# 启动加密货币智能体
if getattr(settings, 'crypto_symbols', '') and settings.crypto_symbols.strip():
try:
from app.crypto_agent.crypto_agent import crypto_agent
_crypto_agent_task = asyncio.create_task(crypto_agent.run())
logger.info(f"加密货币智能体已启动,监控: {settings.crypto_symbols}")
except Exception as e:
logger.error(f"加密货币智能体启动失败: {e}")
# 启动美股智能体 # 启动美股智能体
if getattr(settings, 'stock_symbols', '') and settings.stock_symbols.strip(): if getattr(settings, 'stock_symbols', '') and settings.stock_symbols.strip():
try: try:
@ -194,6 +204,15 @@ async def lifespan(app: FastAPI):
pass pass
logger.info("定时报告任务已停止") logger.info("定时报告任务已停止")
# 停止加密货币智能体
if _crypto_agent_task:
_crypto_agent_task.cancel()
try:
await _crypto_agent_task
except asyncio.CancelledError:
pass
logger.info("加密货币智能体已停止")
# 停止美股智能体 # 停止美股智能体
if _stock_agent_task: if _stock_agent_task:
_stock_agent_task.cancel() _stock_agent_task.cancel()