httpx/docs/async.md
Tom Christie 2d09d5b36c
Renaming -> httpx (#129)
* Renaming -> httpx

* Renaming to httpx
2019-07-19 15:15:16 +01:00

60 lines
1.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Async Client
HTTPX offers a standard synchronous API by default, but also gives you
the option of an async client if you need it.
Async is a concurrency model that is far more efficient than multi-threading,
and can provide significant performance benefits and enable the use of
long-lived network connections such as WebSockets.
If you're working with an async web framework then you'll also want to use an
async client for sending outgoing HTTP requests.
## Making Async requests
To make asynchronous requests, you'll need an `AsyncClient`.
```python
>>> client = httpx.AsyncClient()
>>> r = await client.get('https://www.example.com/')
```
## API Differences
If you're using streaming responses then there are a few bits of API that
use async methods:
```python
>>> client = httpx.AsyncClient()
>>> r = await client.get('https://www.example.com/', stream=True)
>>> try:
>>> async for chunk in r.stream():
>>> ...
>>> finally:
>>> await r.close()
```
The async response methods are:
* `.read()`
* `.stream()`
* `.raw()`
* `.close()`
If you're making parallel requests, then you'll also need to use an async API:
```python
>>> client = httpx.AsyncClient()
>>> async with client.parallel() as parallel:
>>> pending_one = parallel.get('https://example.com/1')
>>> pending_two = parallel.get('https://example.com/2')
>>> response_one = await pending_one.get_response()
>>> response_two = await pending_two.get_response()
```
The async parallel methods are:
* `.parallel()` *Used as an "async with" context manager.*
* `.get_response()`
* `.next_response()`