This release is a pre-release and may not be stable for production use.
requests-extra
Drop-in replacement for the Requests library that wraps it to provide these ✨extra✨ features:
Improved resiliency 🤘
Retry by default (3 times in total) with backoff / respecting Retry-After,
Timeout by default (10 seconds),
Exception on 4xx and 5xx responses by default (automatic raise_for_status()),
Improved performance ⏩
Automatic HTTP keep-alive without explicitly using session,
Support for Brotli enabled by default,
When to use it?
This library is highly opinionated and uses a rather simplistic approach so it may or may not fit your project. For us it did help in the following use cases:
improving many small scripts - f.e. used for monitoring,
modernization of a big but simple and well-tested projects - f.e. old tests,
How to use?
Replace requests with requests-extra in your dependencies file
Replace requests. with requests_extra. in your code.
That’s it!
Example:
# instead of 'from requests import get'
from requests_extra import get
get('https://httpbin.org/headers')
For more examples please see the tests.
How to change the defaults?
See defaults.py.
To change some of them for all of your code do this:
import requests_extra.defaults
requests_extra.defaults.timeout = 1
You can also overwrite them for a single request in the usual way:
from requests_extra import get
get('https://httpbin.org', timeout=5)
TODO
More features:
Single line logging of requests and/or responses, with default secrets redaction,
HTTP/2 support (by switching to encode/httpx as a backend),
[STRIKEOUT:Rate limiting support, including respecting the appropriate HTTP headers] - urllib3 supports it since v. 1.19 released on 2016-11-03… 😅
Support for RFC-2782 style DNS SRV entries (for Consul) - see pstiasny/requests-srv,
Service-to-service authentication on GCP - see adrianchifor/requests-gcp,
Built-in support for caching responses? - maybe with reclosedev/requests-cache or bionikspoon/cache_requests
Contributing
ALL kinds of issues & PRs are very welcome! There are no formal rules of contributing yet, please use common sense. ;)
Credits
Firstly big thanks to all the authors of the wrapped library, Requests!
Additionally thank you to the authors of reused code:
The code for timeouts and raise_for_status() is copied from the better-requests/better-requests library.
The code for LFU cache is copied from the luxinger/lfu_cache.
Some concepts from the CarlosAMolina/requests_custom library are used too.
License
Like the wrapped Requests, and the libraries we reused, this library uses the Apache 2.0 license.
Metadata
Release files for requests-extra 1.0.0b8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| requests_extra-1.0.0b8.tar.gz | 11.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| requests_extra-1.0.0b8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.4 kB
Release files / requests_extra-1.0.0b8.tar.gz
| Download URL | requests_extra-1.0.0b8.tar.gz |
|---|---|
| Size | 11.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b60b45f74630c23c61bf93c2f883e954746a6ff78e10cac392d05e95b29cb699
|
|
BLAKE2b-256 checksum How to use checksums |
32e81094e474ae45bdc7fb4d23747de8bde2d847524f1425a23b9d41ae4315a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.8.7
|
Release files / requests_extra-1.0.0b8-py3-none-any.whl
| Download URL | requests_extra-1.0.0b8-py3-none-any.whl |
|---|---|
| Size | 14.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cf12240066901b68253db0f154300e9e53273aa5d02a95df2a7485fda4c1c8a3
|
|
BLAKE2b-256 checksum How to use checksums |
950e150943f28938af3d50cd4b6ffa6cf9d9904bdf475b0f6815d122a21b4824
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.8.7
|