From cc5c49954f0495bd55c8f298e5899a4dafef93d9 Mon Sep 17 00:00:00 2001 From: liuwei Date: Fri, 17 Apr 2026 11:44:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4md2img=E4=BF=9D=E6=B4=BB?= =?UTF-8?q?=E7=AD=96=E7=95=A5=EF=BC=9A=E5=8F=96=E6=B6=88=E6=88=AA=E5=9B=BE?= =?UTF-8?q?=E5=90=8E=E7=AB=8B=E5=8D=B3=E9=87=8D=E5=BB=BA=EF=BC=8C=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=BF=83=E8=B7=B3=E7=A1=AE=E8=AE=A4=E5=90=8E=E5=86=8D?= =?UTF-8?q?=E8=87=AA=E6=84=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 去除截图后探测失败即刻 restart_browser 的逻辑\n2. 改为仅记录告警并推进断连计数,交由心跳任务统一确认后重建\n3. 保留截图失败时的重试重建能力,避免功能不可用\n4. 增加详细中文注释,明确保活优先与误判抑制设计 --- utils/markdown_to_image.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/utils/markdown_to_image.py b/utils/markdown_to_image.py index 1537734..9e4f71c 100644 --- a/utils/markdown_to_image.py +++ b/utils/markdown_to_image.py @@ -704,7 +704,8 @@ class _PersistentBrowser: try: await _capture_with_browser(browser) # 截图完成后立刻做一次可用性探测。 - # 在部分系统环境中,浏览器可能在任务完成后迅速断连,这里主动重建保证“常驻”语义。 + # 在部分系统环境中,浏览器可能在任务完成后出现短暂抖动。 + # 这里优先“保活语义”:不在截图收尾阶段立刻触发重建,避免误判时把本来可用的浏览器关掉。 # 这里使用“短重试探测”过滤瞬时抖动,避免误判触发不必要重建。 if not await self._is_browser_alive( browser, @@ -712,8 +713,12 @@ class _PersistentBrowser: retry_count=3, retry_interval_seconds=0.35, ): - logger.warning("[md2img] 截图后浏览器已断连,立即执行自动重建") - await self.restart_browser(reason="post_capture_disconnected") + # 说明: + # 1. 仅做告警与“断连计数”推进,不立即调用 restart_browser; + # 2. 后续由心跳任务统一判定是否需要重建(连续多次断连才重建); + # 3. 这样可以最大化避免“截图后立刻重建”导致的保活抖动。 + logger.warning("[md2img] 截图后探测到浏览器可能断连,暂不立即重建,等待心跳进一步确认") + self._disconnect_streak = max(self._disconnect_streak, 2) except Exception as e: # 首次失败后重建一次浏览器再重试,提升抗偶发故障能力。 logger.warning(f"[md2img] 常驻浏览器截图失败,准备重建后重试: {e}")