https://github.com/rob-blackbourn/bareclient
A simple asyncio http client https://rob-blackbourn.github.io/bareClient/
https://github.com/rob-blackbourn/bareclient
asyncio bareasgi client http http-client http2 python python-3
Last synced: 6 months ago
JSON representation
A simple asyncio http client https://rob-blackbourn.github.io/bareClient/
- Host: GitHub
- URL: https://github.com/rob-blackbourn/bareclient
- Owner: rob-blackbourn
- License: apache-2.0
- Created: 2019-03-22T07:20:04.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-03-14T09:44:32.000Z (almost 2 years ago)
- Last Synced: 2024-12-15T22:50:15.148Z (about 1 year ago)
- Topics: asyncio, bareasgi, client, http, http-client, http2, python, python-3
- Language: Python
- Homepage:
- Size: 1.41 MB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bareClient
An asyncio HTTP Python 3.11 client package supporting HTTP versions 1.0, 1.1
and 2 (read the [docs](https://rob-blackbourn.github.io/bareClient/)).
This is the client companion to the ASGI server side web framework
[bareASGI](https://github.com/rob-blackbourn/bareASGI) and follows the same
"bare" approach. It provides only the essential functionality and makes little
attempt to provide any helpful features which might do unnecessary work.
This package is suitable for:
- A foundation for async HTTP/2 clients,
- Async REST client API's,
- Containers requiring a small image size,
- Integration with ASGI web servers requiring async HTTP client access.
## Features
The client has the following notable features:
- Lightweight
- Uses asyncio
- Supports HTTP versions 1.0, 1.1, 2
- Supports middleware
- Handles proxies
## Installation
The package can be installed with pip.
```bash
pip install bareclient
```
This is a Python3.11 and later package.
It has dependencies on:
- [bareUtils](https://github.com/rob-blackbourn/bareUtils)
- [h11](https://github.com/python-hyper/h11)
- [h2](https://github.com/python-hyper/hyper-h2)
## Usage
The basic usage is to create an `HttpClient`.
```python
import asyncio
from typing import List, Optional
from bareclient import HttpClient
async def main(url: str) -> None:
async with HttpClient(url) as response:
if response.ok and response.more_body:
async for part in response.body:
print(part)
asyncio.run(main('https://docs.python.org/3/library/cgi.html'))
```