From a0d573375a211281adf40608033a50b6633b01c0 Mon Sep 17 00:00:00 2001 From: Typosaurus Date: Sun, 19 Jul 2026 20:00:56 +0000 Subject: [PATCH] ticket #104 attempt 1 --- devplacepy/services/jobs/deepsearch/crawl.py | 28 +++++++++++--------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/devplacepy/services/jobs/deepsearch/crawl.py b/devplacepy/services/jobs/deepsearch/crawl.py index 0bba51a1..227edae5 100644 --- a/devplacepy/services/jobs/deepsearch/crawl.py +++ b/devplacepy/services/jobs/deepsearch/crawl.py @@ -22,6 +22,8 @@ from .pdf import MAX_PDF_BYTES, extract_pdf_text, is_pdf logger = logging.getLogger(__name__) +_pw_lock = asyncio.Lock() + RSEARCH_URL = "https://rsearch.app.molodetz.nl" RSEARCH_TIMEOUT_SECONDS = 45.0 FETCH_TIMEOUT_SECONDS = 20.0 @@ -242,18 +244,20 @@ async def fetch_page(url: str, depth: int, browser=None) -> CrawledPage | None: except (LookupError, ValueError) as exc: logger.info("deepsearch decode failed for %s: %s", url, exc) if len(text) < MIN_PAGE_CHARS: - try: - r_title, r_text, r_status, r_links = await _render_with_playwright(url, browser) - if len(r_text) > len(text): - title, text, status, source, links = ( - r_title or title, - r_text, - r_status or status, - "playwright", - r_links, - ) - except Exception as exc: - logger.info("deepsearch render failed for %s: %s", url, exc) + async with _pw_lock: + try: + r_title, r_text, r_status, r_links = await _render_with_playwright(url, browser) + except Exception as exc: + logger.info("deepsearch render failed for %s: %s", url, exc) + r_title, r_text, r_status, r_links = "", "", 0, [] + if len(r_text) > len(text): + title, text, status, source, links = ( + r_title or title, + r_text, + r_status or status, + "playwright", + r_links, + ) if len(text) < MIN_PAGE_CHARS: return None return CrawledPage(