...
Project description
HTTPCore
import httpcore
http = httpcore.ConnectionPool()
response = await http.request('GET', 'http://example.com')
assert response.status_code == 200
assert response.body == b'Hello, world'
Top-level API...
http = httpcore.ConnectionPool([ssl], [timeout], [limits])
response = await http.request(method, url, [headers], [body], [stream])
ConnectionPool as a context-manager...
async with httpcore.ConnectionPool([ssl], [timeout], [limits]) as http:
response = await http.request(method, url, [headers], [body], [stream])
Streaming...
http = httpcore.ConnectionPool()
response = await http.request(method, url, stream=True)
async for part in response.stream():
...
The level of abstraction fits in really well if you're just writing at the raw ASGI level. Eg. Here's an how an ASGI gateway server looks against the API, including streaming uploads and downloads...
import httpcore
class GatewayServer:
def __init__(self, base_url):
self.base_url = base_url
self.http = httpcore.ConnectionPool()
async def __call__(self, scope, receive, send):
assert scope['type'] == 'http'
path = scope['path']
query = scope['query_string']
method = scope['method']
headers = scope['headers']
url = self.base_url + path
if query:
url += '?' + query.decode()
async def body():
nonlocal receive
while True:
message = await receive()
yield message.get('body', b'')
if not message.get('more_body', False):
break
response = await self.http.request(
method, url, headers=headers, body=body, stream=True
)
await send({
'type': 'http.response.start',
'status': response.status_code,
'headers': response.headers
})
async for data in response.raw():
await send({
'type': 'http.response.body',
'body': data,
'more_body': True
})
await send({'type': 'http.response.body'})
app = GatewayServer('http://example.org')
Run with...
uvicorn example:app
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
httpcore-0.0.3.tar.gz
(7.1 kB
view details)
File details
Details for the file httpcore-0.0.3.tar.gz
.
File metadata
- Download URL: httpcore-0.0.3.tar.gz
- Upload date:
- Size: 7.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/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a48728236a581aa50edbeed57cfd85b2841966494ba37fa42427abfd1693de90 |
|
MD5 | 7c08fd74c6bdd740f96a0cb67a196c35 |
|
BLAKE2b-256 | 28c1ee8ef096fb8b775b5f2a4d2c76d43fd5ad53d0e77c327862f0e483f62b93 |