我可以使用 cron 作业同时运行多个 scraper 吗?

我可以使用 cron 作业同时运行多个 scraper 吗?

我已经安排了一些 crontab 作业来抓取一些网站的数据。

我设置了一些 cron 任务,在凌晨 1 点运行爬虫程序,scraper_1 于 1:01 启动,scraper_2 于 1:03 启动,scraper_3 于 1:05 启动

每个抓取程序可能需要 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),平台=Linux 5.4.0-1029-aws x86_64)

这是因为 2 个 scraper 同时运行吗?crontab 会为每个 scraper (webdriver) 创建一个新线程吗?

更新的问题

问题是服务器上没有剩余空间......

我偶然意识到了这个问题,scrapy日志没有帮助。我是否应该检查其他日志来指出实际问题?

答案1

问题是我的服务器上没有剩余空间:

我使用df -h命令检查可用空间,发现 / 分区已满:

$ 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 的卷:

  1. 如何扩展 EC2 卷
  2. 如果收到空间不足的错误,如何扩展卷

相关内容