fix: reduce long-poll timeout to 2s, make mark_as_seen async to unblock TG sender

This commit is contained in:
2026-07-15 19:15:27 +08:00
parent c940a456bc
commit c26d8aa294
2 changed files with 11 additions and 5 deletions

View File

@@ -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 发送成功,标记已读已提交后台")

View File

@@ -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()