From 2f246491e9560e34303ba26754110454c2b5ac56 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 5 Feb 2026 22:28:33 +0800 Subject: [PATCH] update --- backend/app/crypto_agent/crypto_agent.py | 35 +++++++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/backend/app/crypto_agent/crypto_agent.py b/backend/app/crypto_agent/crypto_agent.py index c5d3e57..2312b3c 100644 --- a/backend/app/crypto_agent/crypto_agent.py +++ b/backend/app/crypto_agent/crypto_agent.py @@ -40,8 +40,24 @@ class CryptoAgent: logger.info(f"加密货币智能体初始化完成,监控交易对: {self.symbols}") + def _get_seconds_until_next_5min(self) -> int: + """计算距离下一个5分钟整点的秒数""" + now = datetime.now() + current_minute = now.minute + current_second = now.second + + # 计算下一个5的倍数分钟 + minutes_past = current_minute % 5 + if minutes_past == 0 and current_second == 0: + # 刚好在整点,立即执行 + return 0 + minutes_to_wait = 5 - minutes_past if minutes_past > 0 else 5 + seconds_to_wait = minutes_to_wait * 60 - current_second + + return seconds_to_wait + async def run(self): - """主运行循环""" + """主运行循环 - 在5的倍数分钟执行""" self.running = True logger.info("加密货币智能体开始运行...") @@ -49,16 +65,27 @@ class CryptoAgent: await self.feishu.send_text( f"🚀 加密货币智能体已启动\n" f"监控交易对: {', '.join(self.symbols)}\n" - f"分析间隔: {self.analysis_interval}秒" + f"运行时间: 每5分钟整点 (:00, :05, :10, ...)" ) while self.running: try: + # 等待到下一个5分钟整点 + wait_seconds = self._get_seconds_until_next_5min() + if wait_seconds > 0: + next_run = datetime.now() + timedelta(seconds=wait_seconds) + logger.info(f"等待 {wait_seconds} 秒,下次运行时间: {next_run.strftime('%H:%M:%S')}") + await asyncio.sleep(wait_seconds) + + # 执行分析 + run_time = datetime.now() + logger.info(f"=== 开始分析 [{run_time.strftime('%H:%M:%S')}] ===") + for symbol in self.symbols: await self.analyze_symbol(symbol) - # 等待下一次分析 - await asyncio.sleep(self.analysis_interval) + # 等待几秒确保不会在同一分钟内重复执行 + await asyncio.sleep(2) except Exception as e: logger.error(f"分析循环出错: {e}")