我正在尝试从几个第三方 API 中提取相似的数据,所有这些 API 的模式都略有不同,并将它们全部转换为统一的模式以存储在数据库中并通过统一的 API 公开。这实际上是对已经这样做的系统的重写,减去存储在数据库中,但它很难测试并且不是很优雅。我想我会向社区寻求一些智慧。这里有一些想法/我想要实现的目标。
- 一种指定从外部 API 模式到内部模式的模式映射的简单方法。我意识到转换为统一模式可能会丢失数据中的一些细微差别,但这就是生活。这种模式映射可能不容易做到,并且可能从我发现的有关此事的学术论文中过度杀伤。
- 另一种解决方案是允许第三方开发外部 API 的接口。这些第三方的代码质量可能知道也可能不知道,但可以通过彻底的测试来确定。
- 因此系统应该易于测试,我想通过模拟外部 API 调用来获得可重现的数据并确保解析和转换正确完成。
- 崩溃的外部 API 接口之一不应导致其余接口崩溃。
- 某种模式验证/方法来检测外部 API 模式是否在没有警告的情况下更改
- 这最终将被集成到 Django 项目中,因此可以将其编写为 Django 应用程序,这可能会使单元和集成测试更容易。另一方面,我想让它尽可能地与 Django 分离。虽然 API 接口必须知道要转换成什么格式,但这可以在运行时指定吗?
我错过了愿望清单中的任何内容吗?不切实际?走错路了?很想得到一些反馈。
我不确定是否有库/操作系统项目已经做了一些。我必须重新发明的轮子越少越好。作为操作系统项目,这其中的任何部分是否有价值?
在之前的版本中,我生成了一组处理单个请求的线程。尽管我从未使用过它,但有人告诉我应该将 gevent 视为处理此问题的一种方式。