← Browser Run / browser-run / reference
Причины закрытия браузера
Сеанс браузера может закрыться по разным причинам: штатное завершение, бездействие, ошибки соединения или ошибки в экземпляре headless-браузера. Рекомендуем оборачивать puppeteer.connect или puppeteer.launch в try...catch ↗ для аккуратной обработки неожиданных закрытий.
Чтобы узнать причину закрытия браузера:
-
На панели управления Cloudflare перейдите к разделу Browser Run страницу.
Перейдите в Browser Run ↗ -
Выберите Запуски на вкладке.
Сессии Browser Run тарифицируются на основе использование. Мы не взимаем плату за сеансы, которые завершаются ошибкой из-за сбоев в инфраструктуре Browser Run.
Причины закрытия
| Причина | Описание |
|---|---|
| Штатное закрытие | Ваш код вызвал browser.close() и сеанс завершился штатно. Никаких действий не требуется. |
| Простой браузера | Сеанс не получал команд в течение настроенного тайм-аута бездействия (по умолчанию 60 секунд, до 10 минут при использовании keep_alive). Чтобы избежать закрытия из-за простоя, отправляйте команды в течение окна неактивности или увеличьте keep_alive значение. |
| Сбой Chromium | Экземпляр Chromium внутри сессии аварийно завершил работу, часто из-за того, что страница потребляла слишком много памяти (большой DOM, тяжёлый JavaScript или много одновременно открытых страниц). Попробуйте упростить страницу, закрыть неиспользуемые страницы или разбить задачу на более мелкие части. |
| Ошибка подключения | Соединение между клиентом и Browser Run было прервано. Причиной может быть проблема с сетью, превышение лимита процессорного времени Worker или разрыв соединения WebSocket. Повторите операцию, используя try...catch блок. |
| Сессия вытеснена | Browser Run завершил сессию из-за технического обслуживания инфраструктуры или развёртывания нового релиза. Это не связано с вашим кодом. Повторите операцию с try...catch блок и логику повторного подключения. |
Обработка неожиданного закрытия сессии
Сессии могут закрываться в любой момент из-за сбоев инфраструктуры, проблем с сетью или аварийного завершения работы браузера. Учитывайте это в коде и оборачивайте операции с браузером в try...catch блок и повторное подключение при необходимости.
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();
}
}Для долгих или критически важных процессов рассмотрите возможность добавления логики повторных попыток:
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...`);
}
}
}