Skip to main content

http client/server for asyncio

aiohttp logo https://travis-ci.org/KeepSafe/aiohttp.svg?branch=master https://coveralls.io/repos/KeepSafe/aiohttp/badge.svg?branch=master&service=github https://badge.fury.io/py/aiohttp.svg

Features

  • Supports both client and server side of HTTP protocol.

  • Supports both client and server Web-Sockets out-of-the-box.

  • Web-server has middlewares and pluggable routing.

Getting started

Client

To retrieve something from the web:

import aiohttp
import asyncio

async def fetch(session, url):
    with aiohttp.Timeout(10):
        async with session.get(url) as response:
            return await response.text()

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    with aiohttp.ClientSession(loop=loop) as session:
        html = loop.run_until_complete(
            fetch(session, 'http://python.org'))
        print(html)

Server

This is simple usage example:

from aiohttp import web

async def handle(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(body=text.encode('utf-8'))

async def wshandler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    async for msg in ws:
        if msg.tp == web.MsgType.text:
            ws.send_str("Hello, {}".format(msg.data))
        elif msg.tp == web.MsgType.binary:
            ws.send_bytes(msg.data)
        elif msg.tp == web.MsgType.close:
            break

    return ws


app = web.Application()
app.router.add_route('GET', '/echo', wshandler)
app.router.add_route('GET', '/{name}', handle)

web.run_app(app)

Note: examples are written for Python 3.5+ and utilize PEP-492 aka async/await. If you are using Python 3.4 please replace await with yield from and async def with @coroutine e.g.:

async def coro(...):
    ret = await f()

shoud be replaced by:

@asyncio.coroutine
def coro(...):
    ret = yield from f()

Documentation

https://aiohttp.readthedocs.io/

Discussion list

aio-libs google group: https://groups.google.com/forum/#!forum/aio-libs

Requirements

Optionally you may install cChardet library: https://pypi.python.org/pypi/cchardet/1.0.0

License

aiohttp is offered under the Apache 2 license.

Source code

The latest developer version is available in a github repository: https://github.com/KeepSafe/aiohttp

Benchmarks

If you are interested in by efficiency, AsyncIO community maintains a list of benchmarks on the official wiki: https://github.com/python/asyncio/wiki/Benchmarks

CHANGES

0.22.1 (08-16-2016)

  • Large cookie expiration/max-age doesn’t break an event loop from now (fixes #967)

0.22.0 (08-15-2016)

  • Fix bug in serving static directory #803

  • Fix command line arg parsing #797

  • Fix a documentation chapter about cookie usage #790

  • Handle empty body with gzipped encoding #758

  • Support 451 Unavailable For Legal Reasons http status #697

  • Fix Cookie share example and few small typos in docs #817

  • UrlDispatcher.add_route with partial coroutine handler #814

  • Optional support for aiodns #728

  • Add ServiceRestart and TryAgainLater websocket close codes #828

  • Fix prompt message for web.run_app #832

  • Allow to pass None as a timeout value to disable timeout logic #834

  • Fix leak of connection slot during connection erro #835

  • Gunicorn worker with uvloop support aiohttp.worker.GunicornUVLoopWebWorker #878

  • Don’t send body in response to HEAD request #838

  • Skip the preamble in MultipartReader #881

  • Implement BasicAuth decode classmethod. #744

  • Don’t crash logger when transport is None #889

  • Use a create_future compatibility wrapper instead of creating Futures directly #896

  • Add test utilities to aiohttp #902

  • Improve Request.__repr__ #875

  • Skip DNS resolving if provided host is already an ip address #874

  • Add headers to ClientSession.ws_connect #785

  • Document that server can send pre-compressed data #906

  • Don’t add Content-Encoding and Transfer-Encoding if no body #891

  • Add json() convenience methods to websocket message objects #897

  • Add client_resp.raise_for_status() #908

  • Implement cookie filter #799

  • Include an example of middleware to handle error pages #909

  • Fix error handling in StaticFileMixin #856

  • Add mocked request helper #900

  • Fix empty ALLOW Response header for cls based View #929

  • Respect CONNECT method to implement a proxy server #847

  • Add pytest_plugin #914

  • Add tutorial

  • Add backlog option to support more than 128 (default value in “create_server” function) concurrent connections #892

  • Allow configuration of header size limits #912

  • Separate sending file logic from StaticRoute dispatcher #901

  • Drop deprecated share_cookies connector option (BACKWARD INCOMPATIBLE)

  • Drop deprecated support for tuple as auth paramter. Use aiohttp.BasicAuth instead (BACKWARD INCOMPATIBLE)

  • Remove deprecated request.payload property, use content instead. (BACKWARD INCOMPATIBLE)

  • Drop all mentions about api changes in documentaion for versions older than 0.16

  • Allow to override default cookie jar #963

  • Add manylinux wheel builds

  • Dup a socket for sendfile usage #964

Download files

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

Source Distribution

aiohttp-0.22.1.tar.gz (474.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

aiohttp-0.22.1-cp35-cp35m-win_amd64.whl (130.8 kB view details)

Uploaded CPython 3.5mWindows x86-64

aiohttp-0.22.1-cp35-cp35m-win32.whl (129.6 kB view details)

Uploaded CPython 3.5mWindows x86

aiohttp-0.22.1-cp35-cp35m-manylinux1_x86_64.whl (147.7 kB view details)

Uploaded CPython 3.5m

aiohttp-0.22.1-cp35-cp35m-manylinux1_i686.whl (145.0 kB view details)

Uploaded CPython 3.5m

aiohttp-0.22.1-cp34-cp34m-win_amd64.whl (128.7 kB view details)

Uploaded CPython 3.4mWindows x86-64

aiohttp-0.22.1-cp34-cp34m-win32.whl (128.4 kB view details)

Uploaded CPython 3.4mWindows x86

aiohttp-0.22.1-cp34-cp34m-manylinux1_x86_64.whl (147.8 kB view details)

Uploaded CPython 3.4m

aiohttp-0.22.1-cp34-cp34m-manylinux1_i686.whl (145.2 kB view details)

Uploaded CPython 3.4m

File details

Details for the file aiohttp-0.22.1.tar.gz.

File metadata

  • Download URL: aiohttp-0.22.1.tar.gz
  • Upload date:
  • Size: 474.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for aiohttp-0.22.1.tar.gz
Algorithm Hash digest
SHA256 19e6c67ea9dea962c0b8404813b41039a4b3a17cfb410d6991de0b47d9f0d544
MD5 2ec9d5ad9612fa617beb92f2ef43d97f
BLAKE2b-256 c4e602dde6fce60b1b5b79e6411d972a720be4440dba7bb94285afd9ed2ec6e1

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp35-cp35m-win_amd64.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 4d984f73786cf3b197c93e28e42ae17ee04a8e538d3297dfc2b8e9152fb9f4d4
MD5 eb442a95f75e7f2e176441f1b04cb123
BLAKE2b-256 19987c94c52810c817af40e1d95b509ccdba554e696f7946aec9b07815cebf84

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp35-cp35m-win32.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 87b37520c481e0488663f0c6775e5545dc40f689568c9eee4e8c9dab1bad9dcc
MD5 583873faf98e12c994e616aaf24b1d00
BLAKE2b-256 82bf14a27e427d3736b2364f9df9d7e56e29ced9ea493fbc4f68f0d037995bc8

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ac5cc908f4c2ded6c90a7e1e24f825b592d85b3acf0497dcc54f3f5df881a758
MD5 a03fd8f590a201b5b4026e8b5157dbf2
BLAKE2b-256 c87162ccf522e5f5b064d9d3533a1364fecfe4c041db1e451942c5fd496eaa79

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp35-cp35m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 56d7e64aebf4f07cea351bac66c91ceb50d1bf8270a23b4dc17df669230de406
MD5 0c34e293ffb2621748cc4eb9e9a6ebb1
BLAKE2b-256 2255dac6fc1276e595b7bddd1843eb19562d043867f06e26eba5f48dcb4e142d

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp34-cp34m-win_amd64.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 c7d57d3a91d14ee1ce0bc4cef67940412b95e0ffc6a9f7376647a98a55511efe
MD5 1b22a0fd2a28af3586b9eabfc40e3b69
BLAKE2b-256 25ba1a8e7fb6c14c083234687acf3e47bf39ebfdbd53fcd37e8b2703f22840bd

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp34-cp34m-win32.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 0308ae30d522ab0057ba59c85e5a4eaab1e53c35257d7392d55c6ef19e0c1574
MD5 10b82ac034c7aca54375911d60b24846
BLAKE2b-256 2dddb164ddce1b576c9c9977f619d5a3c5db731172775e809c796fdcfaf34a81

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a2beb822813f6d486c76a235e57e43a74c81eae19c1e80bf14236ed22a52c56d
MD5 a03291d1a0b31109b1e5b37db012b0a3
BLAKE2b-256 53360a1ffadf0db93acefa5a642f2fd3486c686235b36a3d36cd6c106dc310c6

See more details on using hashes here.

File details

Details for the file aiohttp-0.22.1-cp34-cp34m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for aiohttp-0.22.1-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 56960cd2f51c2b3bde52264d403ed6b14d7fe9e5c7b5407845671d06dd431680
MD5 fa83aca9fe7ca1e77794d43c71bbb665
BLAKE2b-256 5026f4fba968d569e451f98ca2ef6f98fc86b10150d1aec8b8019db203b1d92d

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page