Ruby 如何构造需要执行多个HTTP调用的Kiba项目

Ruby 如何构造需要执行多个HTTP调用的Kiba项目,ruby,kiba-etl,Ruby,Kiba Etl,我正在考虑在kiba中编写一个ETL(或类似ETL的)流程,我想知道如何构建它。我的主要问题是总体架构。该过程大致如下: 从HTTP端点获取数据 对于从该API返回的每个项目,再进行一次HTTP调用 对从步骤2返回的每个项目进行一些转换 把每件东西都送到别的地方去 现在我的问题是:如果第一步是源代码,并且直到最后的任何东西都是转换,那么这样可以吗?或者最好是让每个HTTP调用都是一个源,然后以某种方式组合它们,可能使用多个作业?确实最好使用一个源来获取数据的主流 一般建议:尽可能多地分批工作(例

我正在考虑在kiba中编写一个ETL(或类似ETL的)流程,我想知道如何构建它。我的主要问题是总体架构。该过程大致如下:

  • 从HTTP端点获取数据
  • 对于从该API返回的每个项目,再进行一次HTTP调用
  • 对从步骤2返回的每个项目进行一些转换
  • 把每件东西都送到别的地方去

  • 现在我的问题是:如果第一步是
    源代码
    ,并且直到最后的任何东西都是
    转换
    ,那么这样可以吗?或者最好是让每个HTTP调用都是一个
    源,然后以某种方式组合它们,可能使用多个作业?

    确实最好使用一个
    源来获取数据的主流

    一般建议:尽可能多地分批工作(例如,在源代码中分页,如果API在步骤2中支持批量HTTP查找,也可以进行批量HTTP查找)

    源段 例如,您案例中的源可以是分页HTTP资源

    实现它的第一个选项是编写一个专用类,如文档中所述

    第二个选项是像这样使用
    Kiba::Common::Sources::Enumerable
    ():

    sourcekiba::Common::Sources::Enumerable,->{
    Enumerator.new do|y|
    #在这里进行分页和拆分
    
    我遇到的问题是,第二个HTTP请求依赖于第一个HTTP请求的数据。我最终将第二个HTTP请求放入一个转换中,因为它可以转换来自源代码的数据。我一直在考虑的另一件事是使用Sidekiq作为目的地,并像那样链接各种作业,但这对于fir来说太复杂了我不建议直接将Sidekiq作为目的地,除非你真的必须这样做,因为这会让你更难关注工作的结果。至少在最初,我建议作为一个单一的工作。