Skip to main content

用于查询分布在全球分布式数据中心的 API 的多个实例的代理和聚合器。

项目描述

一种快速且高性能的代理和聚合器,用于查询分布在全球分布式数据中心的 API 的多个实例。

https://travis-ci.org/rackerlabs/curryproxy.png

能力

  • CurryProxy 可以处理多个路由,以针对 API 的不同修订版或针对完全不相关的 API 使用。有关示例配置,请参阅 etc/routes.sample.yaml 。

  • 简单的请求转发(有助于保持与托管在单个数据中心中的预 CurryProxy 版本的 API 的向后兼容性)

    • 示例:GET https://api.example.com/v1.0/foo/bar转发到 GET https://1.api.example.com/v1.0/foo/bar

  • 高级请求转发到多个端点

    • 示例:GET https://api.example.com/1,2/v1.0/foo/bar转发到以下内容:

      • 获取https://1.api.example.com/v1.0/foo/bar

      • 获取https://2.api.example.com/v1.0/foo/bar

    • 请求是并行进行的

    • 从多个端点接收的 JSON 响应被聚合 并返回给客户端

      • 示例:从 1 收到的{"foo": 1}和从 2 收到的{"bar": 2} 聚合到[{"foo": 1}, {"bar": 2}]并返回给客户端

    • 代理请求失败时记录并返回给客户端的丰富、有意义的错误

安装

pip install curryproxy会做你所期望的。

有几个额外的选项:

  • pip install curryproxy[tests]。这将安装运行测试所需的任何包。

  • pip install curryproxy[frozen]。这将安装具有显式固定依赖项的 curryproxy,由pip freeze生成。这是为了方便那些希望包提供可重现环境的人。使用的版本将是给定 Curry 版本发布时的最新工作版本。

在启动 Curry 之前,您需要提供配置文件。

注意:配置文件在 v2.x 中已更改。routes.jsonlogging.conf分别变成了 routes.yamllogging.yaml 。有关示例,请参阅示例文件。

限制

  • 仅在多端点聚合 wiki 页面上概述的某些条件下才会将来自多个端点的响应合并在一起。

测试

测试设置为使用tox运行。

默认的tox设置为我们每个依赖项的每个已知可用版本创建环境,并在每个依赖项中运行测试。目前这相当于大约十几个环境,因此您可能希望与tox -p auto并行运行它们。

如果您不想那么彻底(也许您正在冒烟测试正在进行的工作),您可以使用tox -e py36仅针对受支持的最新版本的依赖项运行。

您可以针对特定的依赖版本进行测试,如下所示:

tox -e py36-requests2.{2,3,4,5,6,7} -p auto
tox -e py36-webob1.{2,3,4,5} -p auto
tox -e py36-grequests0.{2,3} -p auto
tox -e py36-requests.latest

tox -e lint也可用,并将运行各种 linting 检查。

路线图

  • 对服务器端排序和分页的 OData 支持

  • 指定时间的响应缓存

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

curryproxy-2.1.1.tar.gz (38.3 kB 查看哈希

已上传 source

内置分布

curryproxy-2.1.1-py3-none-any.whl (28.8 kB 查看哈希

已上传 py3