From 46412511c8a9ec24cd44a640c3bb571ebf4911dd Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Wed, 11 Mar 2026 03:59:55 +0800 Subject: [PATCH] fix: SyntaxError global declaration must be at function top not inside with-block --- src/analysis/ai_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/analysis/ai_analyzer.py b/src/analysis/ai_analyzer.py index ec57e9db..6aebd0ac 100644 --- a/src/analysis/ai_analyzer.py +++ b/src/analysis/ai_analyzer.py @@ -32,6 +32,8 @@ def get_ai_analysis(weather_insights: str, city_name: str, temp_symbol: str) -> logger.warning("GROQ_API_KEY 未配置,跳过 AI 分析") return "" + global _rate_limit_until # 必须在函数顶部声明,不能放在 with 块内 + # ── 缓存配置 ───────────────────────────────────────── cache_ttl = int(os.getenv("GROQ_CACHE_TTL_SEC", "1200")) # 默认 20 分钟 rl_cooldown = int(os.getenv("GROQ_RATE_LIMIT_COOLDOWN_SEC", "600")) # 默认 10 分钟 @@ -51,7 +53,6 @@ def get_ai_analysis(weather_insights: str, city_name: str, temp_symbol: str) -> # ── 全局 429 冷却期检查 ─────────────────────────────── with _rate_limit_lock: - global _rate_limit_until if now < _rate_limit_until: remaining = int(_rate_limit_until - now) logger.warning(f"Groq 冷却期中,还需等待 {remaining}s,跳过本次请求") @@ -163,7 +164,6 @@ P4 **预报背景**(最低优先级): if status == 429: # 触发限流:设置全局冷却期,后续请求不再尝试 with _rate_limit_lock: - global _rate_limit_until _rate_limit_until = time.time() + rl_cooldown logger.warning(f"Groq 触发限流,设置 {rl_cooldown}s 全局冷却期") break # 不再尝试其他模型,直接走 stale cache 逻辑