INTEGRITY Dokumentace

Důvody uzavření prohlížeče

Relace prohlížeče se může uzavřít z řady důvodů, včetně běžného dokončení, nečinnosti, chyb připojení nebo chyb instance headless prohlížeče. Jako osvědčený postup doporučujeme obalit puppeteer.connect nebo puppeteer.launch v try...catch ↗ příkaz, který elegantně ošetří neočekávané uzavření.

Chcete-li zjistit důvod uzavření prohlížeče:

  1. V dashboardu Cloudflare přejděte na Browser Run stránce.

    Přejděte na Browser Run ↗
  2. Vyberte Spuštění kartě.

Relace Browser Run se účtují na základě využití. Relace, které selžou kvůli infrastruktuře Browser Run, neúčtujeme.

Důvody uzavření

Důvod Popis
Normální uzavření Váš kód zavolal browser.close() a relace byla ukončena normálně. Není potřeba žádná akce.
Nečinnost prohlížeče Relace nepřijala žádné příkazy po dobu nastaveného časového limitu neaktivity (výchozí hodnota 60 sekund, až 10 minut s keep_alive). Aby nedošlo k ukončení kvůli nečinnosti, odesílejte příkazy v rámci okna neaktivity nebo zvyšte keep_alive hodnota.
Chromium spadl Instance Chromia uvnitř relace spadla, často proto, že stránka spotřebovala příliš mnoho paměti (rozsáhlý DOM, náročný JavaScript nebo mnoho souběžně otevřených stránek). Zkuste snížit složitost stránky, zavřít nepoužívané stránky nebo rozdělit práci na menší úlohy.
Chyba připojení Spojení mezi klientem a Browser Run bylo přerušeno. Může to být způsobeno síťovými problémy, dosažením limitu CPU času vašeho Workeru nebo odpojením WebSocketu. Operaci zopakujte s try...catch blok.
Relace odstraněna Browser Run ukončil relaci kvůli údržbě infrastruktury nebo nasazení nové verze. Nejde o chybu ve vašem kódu. Operaci zopakujte s try...catch blok a logiku opětovného připojení.

Řešení neočekávaných uzavření

Relace se mohou kdykoli ukončit kvůli infrastrukturním událostem, síťovým problémům nebo pádu prohlížeče. Kód proto navrhněte tak, aby tyto případy ošetřil pomocí try...catch blok a v případě potřeby se znovu připojit.

async function runBrowser(env) {
  let browser;
  try {
    browser = await puppeteer.launch(env.MYBROWSER);
    const page = await browser.newPage();
    await page.goto("https://example.com");
    // Your browser automation logic
  } catch (error) {
    console.error("Browser session ended unexpectedly:", error.message);
    // Retry or return an error response
  } finally {
    await browser?.close();
  }
}

U dlouhotrvajících nebo kritických pracovních postupů zvažte přidání logiky opakování:

async function runWithRetry(env, maxRetries = 3) {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      return await runBrowser(env);
    } catch (error) {
      if (attempt === maxRetries) throw error;
      console.log(`Attempt ${attempt} failed, retrying...`);
    }
  }
}