Lightweight Python asyncio HTTP/1.1 client.
Project description
lowhaio
Work in progress. These docs serve as a rough design spec.
A lightweight Python asyncio HTTP/1.1 client.
Usage
The API is streaming-first: for both request and response bodies, asynchronous generators are used.
import os
from lowhaio import Pool
request, _ = Pool()
path = 'my.file'
content_length = str(os.stat(path).st_size).encode()
async def file_data():
with open(path, 'rb') as file:
for chunk in iter(lambda: file.read(65536), b''):
yield chunk
code, headers, body = await request(
b'POST', 'https://example.com/path', ((b'content-length': content_length),), file_data(),
)
async for chunk in body:
print(chunk)
However, there are helper functions streamed
and buffered
when this isn't required or possible.
from lowhaio import Pool, streamed, buffered
path = 'my.file'
content_length = str(os.stat(path).st_size).encode()
async def file_data():
with open(path, 'rb') as f:
return file.read()
content_length = str(len(data)).encode()
code, headers, body = await request(
b'POST', 'https://example.com/path', ((b'content-length': content_length),), streamed(file_data()),
)
response = await buffered(body)
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
lowhaio-0.0.7.tar.gz
(3.5 kB
view hashes)