Skip to main content

Async http client

Project description

Build Status Coverage Status PyPI version

aiosonic

Fastest Python async http client

Here is some documentation.

There is a performance script in tests folder which shows very nice numbers

» python tests/performance.py
doing tests...
{
 "aiohttp": "1000 requests in 247.47 ms",
 "requests": "1000 requests in 3625.10 ms",
 "aiosonic": "1000 requests in 80.09 ms",
 "aiosonic cyclic": "1000 requests in 128.71 ms",
 "httpx": "1000 requests in 528.73 ms"
}
aiosonic is 209.00% faster than aiohttp
aiosonic is 4426.34% faster than requests
aiosonic is 60.70% faster than aiosonic cyclic
aiosonic is 560.17% faster than httpx

Requirements:

  • Python>=3.6

Features:

  • Keepalive and smart pool of connections
  • Multipart File Uploads
  • Chunked responses handling
  • Chunked requests
  • Connection Timeouts
  • Automatic Decompression
  • Follow Redirects
  • Fully type annotated.
  • 100% test coverage.

Usage

import asyncio
import aiosonic
import json


async def run():
    """Start."""
    response = await aiosonic.get('https://www.google.com/')
    assert response.status_code == 200
    assert b'Google' in (await response.content())

    url = "https://postman-echo.com/post"
    posted_data = {'foo': 'bar'}
    response = await aiosonic.post(url, data=posted_data)

    assert response.status_code == 200
    data = json.loads(await response.content())
    assert data['form'] == posted_data
    print('success')


def start():
    loop = asyncio.get_event_loop()
    loop.run_until_complete(run())


if __name__ == '__main__':
    start()

TODO

  • Better documentation
  • International Domains and URLs (idna + cache)
  • Requests using a http proxy
  • Sessions with Cookie Persistence
  • Basic/Digest Authentication
  • Elegant Key/Value Cookies

Development

Install packages with pip-tools:

pip install pip-tools
pip-compile
pip-compile test-requirements.in
pip-sync requirements.txt test-requirements.txt

Contribute

  1. Fork
  2. create a branch feature/your_feature
  3. commit - push - pull request

Thanks :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiosonic-0.2.1.tar.gz (11.0 kB view hashes)

Uploaded Source

Built Distribution

aiosonic-0.2.1-py3-none-any.whl (12.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page