Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jmcarp/requests-middleware
Composable plugins for python-requests
https://github.com/jmcarp/requests-middleware
Last synced: 2 months ago
JSON representation
Composable plugins for python-requests
- Host: GitHub
- URL: https://github.com/jmcarp/requests-middleware
- Owner: jmcarp
- License: mit
- Created: 2014-07-10T03:27:11.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-11-07T17:26:37.000Z (about 9 years ago)
- Last Synced: 2024-04-11T23:54:34.441Z (9 months ago)
- Language: Python
- Homepage:
- Size: 187 KB
- Stars: 59
- Watchers: 7
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- Changelog: HISTORY.rst
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - requests-middleware - Composable plugins for python-requests (Python)
README
requests-middleware
===================.. image:: https://badge.fury.io/py/requests-middleware.png
:target: http://badge.fury.io/py/requests-middleware.. image:: https://travis-ci.org/jmcarp/requests-middleware.png?branch=master
:target: https://travis-ci.org/jmcarp/requests-middleware*TL;DR*: **requests-middleware** is a custom transport adapter that allows simple
composition of HTTP interactions.The `python-requests`_ library makes excellent use of transport adapters to
allow for easy extension and modification of HTTP interactions. There are
adapters for SSL configuration, rate-limiting, and testing, and writing your
own adapters is easy.But what if you want to use more than one of those behaviors for the same
session? What if you want HTTP caching *and* rate-limiting? Requests only
uses one adapter per URL. You could write a new
`CachingRateLimitingHTTPAdapter`, but that's probably not the best solution.**requests-middleware** is an effort to preserve the modularity of adapters,
while allowing simple composition of multiple types of interaction. Want to
use HTTP caching, respect robots.txt files, and limit your application to
10 requests per hour? No problem!.. code-block:: python
import requests
from requests_middleware import MiddlewareHTTPAdapter
from requests_middleware.contrib.cacheware import CacheMiddleware
from requests_middleware.contrib.robotware import RobotsMiddleware
from requests_middleware.contrib.throttleware import \
ThrottleMiddleware, RequestsPerHourThrottlersession = requests.Session()
middlewares = [
CacheMiddleware(),
RobotsMiddleware(),
ThrottleMiddleware(RequestsPerHourMiddleware(10)),
]
adapter = MiddlewareHTTPAdapter(middlewares)
session.mount('http://', adapter)
session.mount('https://', adapter).. _python-requests: https://github.com/kennethreitz/requests
.. _httpcache: https://github.com/Lukasa/httpcache