У меня есть расписание crontab для очистки ряда веб-сайтов.
Я установил несколько заданий cron для запуска скребков в 01:00, scraper_1 запускается в 1:01, scraper_2 запускается в 1:03, а scraper_3 запускается в 1:05
На выполнение каждого scraper может уйти от 3 до 6 минут. , поэтому между запущенными скребками есть некоторое время перекрытия.
# start on 1:01
01 01 * * * cd /home/ubuntu/jobscrapers/scraper_1 && scrapy crawl spider_1 >> /tmp/scraper.log 2>&1
# start on 1:03
03 01 * * * cd /home/ubuntu/jobscrapers/scraper_2 && scrapy crawl spider_2 >> /tmp/scraper.log 2>&1
# start on 1:05
05 01 * * * cd /home/ubuntu/jobscrapers/scraper_3 && scrapy crawl spider_3 >> /tmp/scraper.log 2>&1
Все эти парсеры написаны с использованием Scrapy и используют Selenium и Chrome Web Driver.
Код работает нормально на моей машине разработки (Windows) ... но в последнее время я получаю некоторые случайные ошибки на производственной машине (Ubuntu)
Например, скребок запускает штрафы в течение некоторого времени, а затем вылетает с ошибкой следующая ошибка:
selenium.common.exceptions.WebDriverException: Сообщение: неизвестная ошибка: сеанс удален из-за сбоя страницы из-за неизвестной ошибки: невозможно определить статус загрузки из-за сбоя вкладки (информация о сеансе: headless chrome = 86.0.4240.111) (Информация о драйвере: chromedriver = 2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706), platform = Linux 5.4.0-1029-aws x86_64)
Это потому, что одновременно работают 2 скребка? Создает ли crontab новый поток для каждого парсера (webdriver)?
Проблема заключалась в том, что на сервере не осталось места ...
Я обнаружил проблему случайно, журнал scrapy был не полезно. Существовали ли другие журналы, которые я должен был проверить, чтобы указать мне на настоящую проблему?
Проблема заключалась в том, что на моем сервере не осталось места:
Я использую команду df -h
, чтобы проверить доступное пространство, и заметил, что раздел / был заполнен на 100%:
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 460M 0 475M 0% /dev
tmpfs 478M 0 492M 0% /dev/shm
tmpfs 478M 432K 492M 1% /run
tmpfs 478M 0 492M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 8.0G 664K 100% /
tmpfs 96M 0 99M 0% /run/user/1000
Поскольку мой сервер является экземпляром AWS EC2, мне пришлось увеличить объем. Следующие 2 ссылки объясняют, как расширить том EC2: