Batch the GET requests to your REST API into a single POST
Project description
Batch the GET requests to your API into a single POST. Save requests latency and reduce REST chatiness.
I was inspired by this article from 3scale, and by their NGINX aggregator - but I wanted something simpler.
What does it do?
Flask-Aggregator adds an endpoint to your Flask application that handles multiple GET requests in a single POST, and returns the response of each GET request in a JSON stream.
What does that mean?
It means that instead of sending multiple GET requests:
-> GET /route1
<- answer1
-> GET /route2
<- answer2
-> GET /route3
<- answer3
You can now just send a single POST that aggregates them all:
-> POST /aggregate ["/route1", "/route2", "/route3"]
<- {
"/route1": answer1,
<- "/route2": answer2,
<- "/route3": answer3
}
Why?
Mobile networks.
How to install?
$ pip install flask-aggregator
How to setup my application?
from flask import Flask
from flask_aggregator import Aggregator
app = Flask(__name__)
Aggregator(app=app, endpoint="/batch")
How to aggregate?
$ python example.py
[go to another shell]
$ curl -H "Content-type: application/json" -X POST 127.0.0.1:5000/batch \
--data-raw '["/hello/world", "/hello/ramnes?question=Sup?"]'
{
"/hello/world": "Hello, world!",
"/hello/ramnes?question=Sup?": "Hello, ramnes! Sup?"
}
Is it ready for production yet?
Not really.
As of today, Flask-Aggregator executes the aggregated requests in a synchronous manner, which makes it only useful if latency is a real issue and response time is not, and that more than N requests are sent at the same time, where N is maximum number of concurrent requests on user’s client.
Also, it has limitations such has:
no automatic caching mechanism browser-side, since it uses a POST request
no header support at all for now, which means no cookie, etag, or whatever
no other HTTP verb than GET is supported for now
Last but not least, chances are high that a lot of corner cases are not handled.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file Flask-Aggregator-0.2.0.tar.gz
.
File metadata
- Download URL: Flask-Aggregator-0.2.0.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80cc643beaa9904b0d56bfce22e36cc642d26423fe9137a29b4ff1c549222f9c |
|
MD5 | eed9be6cc0442d4185687ce1c8f9fc93 |
|
BLAKE2b-256 | b52b4154c6a72e7b03b6dd2eabc489832768cf8aae2610a445df0478c283d620 |