На Raspberry Pi Zero кукловод зависает после превышения тайм-аута - PullRequest
1 голос
/ 29 апреля 2020

У меня возникают некоторые проблемы с запуском Raspberry Pi Zero puppeteer, как я видел это в этом уроке .

До сих пор я делал что-то вроде:

$ sudo apt-get install chromium-browser chromium-codecs-ffmpeg --yes

$ npm init -Y
$ npm install puppeteer-core@1.11.0

также пробовал без привязки версии ядра к 1.11.0 - те же результаты.

Вот мой index.js:

const puppeteer = require('puppeteer-core');

(async () => {
    try {
        const browser = await puppeteer.launch({ executablePath: 'chromium-browser', headless: true, product: 'chrome' });
        const page = await browser.newPage();
        page.setDefaultNavigationTimeout(25 * 1000);
        await page.goto('https://www.google.com/');
        await page.screenshot({ path: 'screenshot.png' });

        await browser.close();
        console.log('screenshot taken');
    } catch (e) {
        console.log(e.message);
    }
})();

И когда я его запускаю вот так я получаю ошибку тайм-аута:

$ node index.js
Navigation Timeout Exceeded: 25000ms exceeded

Но он просто зависает. Нет выхода!

Любая помощь будет высоко оценена, спасибо.

1 Ответ

2 голосов
/ 02 мая 2020

Вот несколько указателей, которые могут быть полезны для вас:

Вам необходимо убедиться, что у вас есть целое rnet подключение к вашему RPi, которое обслуживает вас не более чем в 25 секунд, т.е. page.setDefaultNavigationTimeout(25 * 1000); , Вы можете использовать команду ping для определения задержки, т.е. ping google.com.

Я считаю, что у вас есть модель RPi Zero с одноядерным процессором 1 ГГц и 512 МБ ОЗУ, как указано здесь . Таким образом, аппаратное обеспечение и операционная система также будут способствовать таким факторам, как открытие безголового браузера, создание снимка и сохранение его в файл; все эти операции потребуют времени. Вы можете индивидуально рассчитать время выполнения этих операций, чтобы получить более точное представление об общем потраченном времени.

Я проверил его на компьютере (Core i5 - 8 ядер, 8 ГБ ОЗУ с Ubuntu 18.04 LTS) и это заняло ~ 4 секунды. В этом видеоуроке это заняло ~ 9 секунд.

Итак, простое решение - использовать более длительное значение тайм-аута.

Еще одна вещь, которую вы можете сделать, - разместить простое состояние c веб-страницу на вашем локальном Apache сервере и используйте его адрес (например, http://localhost: 8080 / index. html) для локального тестирования без целого числа rnet. В этом случае задержка будет намного меньше, и вы сможете проверить, работает ли она на вашем RPi Zero. В этом случае вам также может понадобиться скорректировать время ожидания. Вы также можете использовать Python SimpleHTTPServer вместо Apache Server.

...