HttpIO - 在Dataflow转换中使用外部资源

时间:2016-09-26 09:14:42

标签: python google-cloud-dataflow google-cloud-pubsub airflow

我尝试使用Python Dataflow SDK编写自定义Source,以便从REST端点并行读取JSON数据。

E.g。对于给定的一组ID,我需要从以下位置检索数据: https://foo.com/api/results/1 https://foo.com/api/results/2 ... https://foo.com/api/results/{maxID}

我需要的主要功能是监控&速率限制:即使我需要并行性(基于线程/进程或使用异步/协同程序),我还需要确保我的工作保持"礼貌"朝向API端点 - 有效避免非自愿DDoS。

使用psq,我应该可以实现某种速率限制机制,但是我失去了监控进度的能力。 ETA使用Dataflow Service Monitoring

似乎虽然它们很好地协同工作,但Google Cloud Dataflow和Google Cloud Pub / Sub(使用Google Stackdriver Monitoring)之间的监控并不统一。

我应该如何构建一个大规模并行的HTTP消费者工作流程来实现速率限制并进行基于Web的监控?

1 个答案:

答案 0 :(得分:1)

Dataflow目前没有内置的全局速率限制方法,但您可以使用Source API来执行此操作。关键概念是Source的每个拆分最多由一个线程处理,因此您可以为每个拆分单独实现本地速率限制。

此解决方案根本不使用Pub / Sub,因此您可以专门使用Dataflow Monitoring UI。如果要根据管道中的特定事件设置警报,可以执行this

之类的操作