A proxy and aggregator for querying multiple instances of an API spread across globally distributed data centers.
Project description
A fast and performant proxy and aggregator for querying multiple instances of an API spread across globally distributed data centers.
Capabilities
CurryProxy can handle multiple routes for use against different revisions of an API or for use against completely unrelated APIs. See etc/routes.sample.json for an example configuration.
Simple request forwarding (useful for preserving backwards compatability with pre-CurryProxy versions of an API hosted in a single datacenter)
Example: GET https://api.example.com/v1.0/foo/bar forwarded to GET https://1.api.example.com/v1.0/foo/bar
Advanced request forwarding to multiple endpoints
Example: GET https://api.example.com/1,2/v1.0/foo/bar forwarded to the following:
GET https://1.api.example.com/v1.0/foo/bar
GET https://2.api.example.com/v1.0/foo/bar
Requests are made in parallel
JSON responses received from multiple endpoints are aggregated and returned to the client
Example: {"foo": 1} received from 1 and {"bar": 2} received from 2 are aggregated to [{"foo": 1}, {"bar": 2}] and returned to the client
Rich, meaningful errors logged and returned to the client when a proxied request fails
Installation
pip install curryproxy
Setup the configuration files and start it up!
Limitations
Merging responses from multiple endpoints together occurs only under certain conditions outlined on the Multiple Endpoints Aggregation wiki page.
Roadmap
OData support for server-side ordering and paging
Response caching for a specified time
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for curryproxy-1.0.2-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74b2fa0c83c322b1ec1c6eec43f314493bbe22e77f0ff31ab3076ae70c1c6c4f |
|
MD5 | 4310a13391a9a97cee947a716b73fa1c |
|
BLAKE2b-256 | cd7f5e3100baacdb7bcb84bbf95725772ce251d90df08f9d3091992eb7f23618 |