Skip to main content
https://img.shields.io/pypi/v/flask-aggregator.svg

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

Release files for Flask-Aggregator 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Flask-Aggregator 0.2.0
File Size Uploaded
Flask-Aggregator-0.2.0.tar.gz 3.3 kB Details

Release files / Flask-Aggregator-0.2.0.tar.gz

Download URL Flask-Aggregator-0.2.0.tar.gz
Size 3.3 kB
Tags Source
SHA-256 checksum
How to use checksums
80cc643beaa9904b0d56bfce22e36cc642d26423fe9137a29b4ff1c549222f9c
BLAKE2b-256 checksum
How to use checksums
b52b4154c6a72e7b03b6dd2eabc489832768cf8aae2610a445df0478c283d620
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.1.2

1 release file

0.1.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page