scrapy - 监控 Airflow 中的长期任务

标签 scrapy airflow

我见过有人使用 Airflow 通过 Scrapyd 守护进程安排数百个抓取工作。然而,他们在 Airflow 中错过的一件事是监控诸如抓取之类的长期作业:获取到目前为止抓取的页面和项目的数量、到目前为止失败或重试但没有成功的 URL 数量。

我可以选择哪些方式来监控长期工作的当前状态?是否有一些已经可用的东西,或者我需要自己求助于外部解决方案,例如 Prometheus、Grafana 和仪器 Scrapy 蜘蛛?

最佳答案

我们运气比较好,让 Airflow 工作保持简短而顺利。

对于长时间运行的任务,您可能会遇到队列备份的风险。我们发现并行度限制不太直观。 Check out this post for a good breakdown .

在像您这样的情况下,当有大量工作需要协调并可能重试时,我们会使用 Kafka。 Airflow dag 从 Kafka 主题中提取消息,然后通过 Kafka 包装器报告成功/失败。

我们最终会以“微批处理”的方式运行多个重叠的 Airflow 任务,从 Kafka 读取可调整数量的消息,目的是使每个 Airflow 任务保持在一定的运行时间内。

通过保持每个 Airflow 任务中的工作量较小,我们可以轻松地增加或减少消息数量,以根据 Airflow 工作线程的整体并行性来调整总体任务运行时间。

看起来你可以在这里探索类似的东西?

希望有帮助!

关于scrapy - 监控 Airflow 中的长期任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877849/

相关文章:

javascript - Python Crawling Pastebin(JavaScript 呈现的网页)

python - Airflow 工作器配置

Airflow LocalExecutor 用于并行运行任务的高内存使用率 : expected or fixable?

python - 尽管继承自 CrawlSpider,但 Scrapy NotImplemented 解析错误

python - Scrapy 启动连接在本地主机上被拒绝 :8050

python - 如何重新运行已经使用 TriggerDagrunoperator 执行的 dag?

python - Airflow GKEPodOperator xcom_push 返回 None

无论下游发生什么情况,Airflow 任务都会运行

python - Scrapy - 使用 LinkExtractor 抓取站点地图

python - 创建一个通用的 scrapy 蜘蛛