在Python中转换和统一API数据

时间:2013-04-05 00:35:28

标签: python django api rest gevent

我正在尝试从几个第三方API中提取类似的数据,所有这些API都有稍微不同的模式,并将它们全部转换为统一模式以存储在数据库中并通过统一的API公开。这实际上是对已经执行此操作的系统的重写,减去存储在DB中,但是很难测试而且不是很优雅。我想我会转向社区寻求一些智慧。 以下是我想要实现的一些想法。

  • 指定从外部API架构到内部架构的架构映射的简便方法。我意识到,通过转换为统一模式,数据中的一些细微差别可能会丢失,但这就是生命。这种模式映射可能不容易做到,也许从我在这件事上发现的学术论文上来说太过分了。
  • 另一种解决方案是允许第三方开发外部API的接口。这些第三方的代码质量可能已知,也可能未知,但可通过全面测试建立。
  • 因此系统应该易于测试,我想通过模拟外部API调用来获得可重现的数据,并确保正确地进行解析和转换。
  • 其中一个外部API接口崩溃不应该导致其余部分崩溃。
  • 某种模式验证/方法,用于检测外部API模式是否在没有警告的情况下发生了变化
  • 这将最终被集成到Django项目中,因此可以将其编写为Django应用程序,这可能使单元和集成测试更容易。另一方面,我想尽可能地将它与Django分开。虽然API接口必须知道要转换为什么格式,但是可以在运行时指定吗?

我是否遗漏了愿望清单中的任何内容?不切实际?走错路?很想得到一些反馈。

我不确定是否有库/ OS项目已经完成了一些。轮胎越少,我就必须重塑更好。作为操作系统项目,这部分内容是否有价值?

在之前的版本中,我产生了一堆线程来处理各个请求。虽然我从未使用它,但我被告知我应该将gevent视为处理这个问题的一种方法。

1 个答案:

答案 0 :(得分:0)

对于您的第二个要点,您应该查看Temboo。 Temboo规范化访问超过100个API,这意味着您可以使用您选择的语言中的常用语法与它们进行对话。在这种情况下,您将使用Temboo Python SDK - 可用here

(完全披露:我在Temboo工作)