我见过有人使用 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/