From c26d8aa2946aac17545c1af95978bb4aef200368 Mon Sep 17 00:00:00 2001 From: Zichao Lin Date: Wed, 15 Jul 2026 19:15:27 +0800 Subject: [PATCH] fix: reduce long-poll timeout to 2s, make mark_as_seen async to unblock TG sender --- src/summarizer.py | 12 +++++++++--- src/tg_bot.py | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/summarizer.py b/src/summarizer.py index 13cdb10..376fe39 100644 --- a/src/summarizer.py +++ b/src/summarizer.py @@ -1,5 +1,6 @@ import logging import re +import threading from typing import Generator, Optional from src.config import Config from src.email_client import fetch_unseen_emails, mark_as_seen, Email @@ -100,6 +101,11 @@ def tg_send_and_mark(cfg: Config, info: dict): original_recipient=info.get("original_recipient", ""), original_reply_to=info.get("original_reply_to", ""), account_email=info.get("account_email", "")) - # 只有发送成功才标记已读 - mark_as_seen(acct, [(info["uid"], info.get("folder", "INBOX"))]) - logger.info(f" TG 发送成功,已标记已读") + # 标记已读放到后台线程,不阻塞 TG 发送 + def _bg_mark(): + try: + mark_as_seen(acct, [(info["uid"], info.get("folder", "INBOX"))]) + except Exception: + pass + threading.Thread(target=_bg_mark, daemon=True).start() + logger.info(f" TG 发送成功,标记已读已提交后台") diff --git a/src/tg_bot.py b/src/tg_bot.py index 63e86fc..34ddd6c 100644 --- a/src/tg_bot.py +++ b/src/tg_bot.py @@ -86,8 +86,8 @@ def poll_telegram(tg_cfg: TelegramConfig, cfg: Config, last_update_id: int) -> i try: resp = requests.get( f"https://api.telegram.org/bot{tg_cfg.bot_token}/getUpdates", - params={"offset": last_update_id, "timeout": 5}, - timeout=15, + params={"offset": last_update_id, "timeout": 2}, + timeout=10, ) resp.raise_for_status() data = resp.json()