支持服务启动后自动预热转图浏览器
变更项:1) markdown_to_image 新增预热方法 warmup_md2img_browser/warmup_md2img_browser_sync,用于提前拉起常驻浏览器。2) main.py 启动流程新增后台预热线程,服务启动后自动执行转图浏览器预热。3) 预热失败仅记录日志不阻塞主服务,运行期仍可按需自动重建浏览器。4) 补充中文注释说明预热目的与降级策略。
This commit is contained in:
@@ -610,6 +610,32 @@ def _get_browser_manager() -> _PersistentBrowser:
|
||||
return _BROWSER_MANAGER
|
||||
|
||||
|
||||
async def warmup_md2img_browser(timeout_seconds: int = 45) -> bool:
|
||||
"""预热 Markdown 转图浏览器(异步)。
|
||||
|
||||
设计目的:
|
||||
1. 服务启动后提前完成浏览器冷启动,减少首个截图任务的等待和失败概率;
|
||||
2. 不执行实际业务截图,仅确保常驻浏览器已可用。
|
||||
"""
|
||||
try:
|
||||
manager = _get_browser_manager()
|
||||
await asyncio.wait_for(manager.ensure_browser(), timeout=max(10, int(timeout_seconds)))
|
||||
logger.info("[md2img] 浏览器预热完成")
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.error(f"[md2img] 浏览器预热失败: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def warmup_md2img_browser_sync(timeout_seconds: int = 45) -> bool:
|
||||
"""预热 Markdown 转图浏览器(同步包装,适合在线程中调用)。"""
|
||||
try:
|
||||
return asyncio.run(warmup_md2img_browser(timeout_seconds=timeout_seconds))
|
||||
except Exception as e:
|
||||
logger.error(f"[md2img] 同步预热执行失败: {e}")
|
||||
return False
|
||||
|
||||
|
||||
async def html_to_image(html_content, output_image):
|
||||
manager = _get_browser_manager()
|
||||
await manager.screenshot(html_content, output_image)
|
||||
|
||||
Reference in New Issue
Block a user