From c193c6e7c4c7eede9c9ee699fb9d20fde7e9b5fb Mon Sep 17 00:00:00 2001 From: Chang-Yen Tseng <10328757+Summon528@users.noreply.github.com> Date: Thu, 27 Mar 2025 02:52:29 -0700 Subject: feat(workers): Add CRAWLER_SCREENSHOT_TIMEOUT_SEC (#1155) --- apps/workers/crawlerWorker.ts | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'apps') diff --git a/apps/workers/crawlerWorker.ts b/apps/workers/crawlerWorker.ts index 5798b98c..e75a8586 100644 --- a/apps/workers/crawlerWorker.ts +++ b/apps/workers/crawlerWorker.ts @@ -322,23 +322,31 @@ async function crawlPage( let screenshot: Buffer | undefined = undefined; if (serverConfig.crawler.storeScreenshot) { - screenshot = await Promise.race([ - page - .screenshot({ + try { + screenshot = await Promise.race([ + page.screenshot({ // If you change this, you need to change the asset type in the store function. type: "png", encoding: "binary", fullPage: serverConfig.crawler.fullPageScreenshot, - }) - .catch(() => undefined), - new Promise((f) => setTimeout(f, 5000)), - ]); - if (!screenshot) { - logger.warn(`[Crawler][${jobId}] Failed to capture the screenshot.`); - } else { + }), + new Promise((_, reject) => + setTimeout( + () => + reject( + "TIMED_OUT, consider increasing CRAWLER_SCREENSHOT_TIMEOUT_SEC", + ), + serverConfig.crawler.screenshotTimeoutSec * 1000, + ), + ), + ]); logger.info( `[Crawler][${jobId}] Finished capturing page content and a screenshot. FullPageScreenshot: ${serverConfig.crawler.fullPageScreenshot}`, ); + } catch (e) { + logger.warn( + `[Crawler][${jobId}] Failed to capture the screenshot. Reason: ${e}`, + ); } } -- cgit v1.2.3-70-g09d2