async-await support for `requests`.
Project description
requests-async
Brings support for async
/await
syntax to Python's fabulous requests
library.
Contributions towards closing off our outstanding issues would be very welcome! ✨ 🍰 ✨
Requirements
- Python 3.6, 3.7.
Installation
$ pip install requests-async
Usage
Just use the standard requests API, but use await
for making requests.
Note: Use ipython
to try this from the console, since it supports await
.
import requests_async as requests
response = await requests.get('https://example.org')
print(response.status_code)
print(response.text)
Or use explicit sessions.
import requests_async as requests
with requests.Session() as session:
response = await session.get('https://example.org')
print(response.status_code)
print(response.text)
The requests_async
package subclasses requests
, so you're getting all the
standard behavior and API you'd expect.
Mock Requests
In some situations, such as when you're testing a web application, you may not want to make actual outgoing network requests, but would prefer instead to mock out the endpoints.
You can do this using the ASGISession
, which allows you to plug into
any ASGI application, instead of making actual network requests.
import requests_async
# Create a mock service, with Starlette, Responder, Quart, FastAPI, Bocadillo,
# or any other ASGI web framework.
mock_app = ...
if TESTING:
# Issue requests to the the mock application.
requests = requests_async.ASGISession(mock_app)
else:
# Make live network requests.
requests = requests_async.Session()
Test Client
You can also use ASGISession
as a test client for any ASGI application.
You'll probably want to install pytest
and pytest-asyncio
, or something
equivalent, to allow you to write async
test cases.
from requests_async import ASGISession
from myproject import app
import pytest
@pytest.mark.asyncio
async def test_homepage():
client = ASGISession(app)
response = await client.get("/")
assert response.status_code == 200
Limitations
- Streaming uploads and downloads are unsupported.
- SSL verification is not currently enabled.
- No timeout support yet.
See the issues list for more details.
Alternatives
The aiohttp
package provides an alternative client for making async HTTP requests.
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 requests-async-0.1.2.tar.gz
.
File metadata
- Download URL: requests-async-0.1.2.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7cb1a684fb47c77e5581af956183493ec79074d6dba6eb9c031a5a5b7b421d5 |
|
MD5 | 7e9062aaf57d3bf70c17a1762b643ac3 |
|
BLAKE2b-256 | c58f76c0843e055208b8b39eefaa807c5990a587bb7b97309c301efd38f6e858 |