Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ramnes/flask-aggregator
:fast_forward: Batch the GET requests to your REST API into a single POST
https://github.com/ramnes/flask-aggregator
api flask flask-extensions http mobile-first python rest
Last synced: about 2 months ago
JSON representation
:fast_forward: Batch the GET requests to your REST API into a single POST
- Host: GitHub
- URL: https://github.com/ramnes/flask-aggregator
- Owner: ramnes
- License: mit
- Archived: true
- Created: 2017-01-08T22:48:23.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-01-17T18:57:00.000Z (almost 8 years ago)
- Last Synced: 2024-09-17T00:29:29.609Z (3 months ago)
- Topics: api, flask, flask-extensions, http, mobile-first, python, rest
- Language: Python
- Homepage:
- Size: 12.7 KB
- Stars: 22
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Flask-Aggregator
================.. image:: 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:
.. code-block:: sh
-> GET /route1
<- answer1
-> GET /route2
<- answer2
-> GET /route3
<- answer3You can now just send a single POST that aggregates them all:
.. code-block:: sh
-> POST /aggregate ["/route1", "/route2", "/route3"]
<- {
"/route1": answer1,
<- "/route2": answer2,
<- "/route3": answer3
}Why?
----Mobile networks.
How to install?
---------------.. code-block:: sh
$ pip install flask-aggregator
How to setup my application?
----------------------------.. code-block:: python
from flask import Flask
from flask_aggregator import Aggregatorapp = Flask(__name__)
Aggregator(app=app, endpoint="/batch")How to aggregate?
-----------------.. code-block:: sh
$ 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 nowLast but not least, chances are high that a lot of corner cases are not handled.
License
-------MIT