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.3 (07-26-2016)

  • Do not filter cookies if unsafe flag provided #1005

0.22.2 (07-23-2016)

  • Suppress CancelledError when Timeout raises TimeoutError #970

  • Don’t expose aiohttp.__version__

  • Add unsafe parameter to CookieJar #968

  • Use unsafe cookie jar in test client tools

  • Expose aiohttp.CookieJar name

0.22.1 (07-16-2016)

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

0.22.0 (07-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

Release files for aiohttp 0.22.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aiohttp 0.22.3
File Size Uploaded
aiohttp-0.22.3.tar.gz 475.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for aiohttp 0.22.3
File
aiohttp-0.22.3-cp35-cp35m-win_amd64.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-64 Details
aiohttp-0.22.3-cp35-cp35m-win32.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-32 Details
aiohttp-0.22.3-cp35-cp35m-manylinux1_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 Details
aiohttp-0.22.3-cp35-cp35m-manylinux1_i686.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-32 Details
aiohttp-0.22.3-cp34-cp34m-win_amd64.whl CPython 3.4 CPython 3.4 pymalloc Windows x86-64 Details
aiohttp-0.22.3-cp34-cp34m-win32.whl CPython 3.4 CPython 3.4 pymalloc Windows x86-32 Details
aiohttp-0.22.3-cp34-cp34m-manylinux1_x86_64.whl CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-64 Details
aiohttp-0.22.3-cp34-cp34m-manylinux1_i686.whl CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-32 Details

Total release size: 1.6 MB

Release files / aiohttp-0.22.3.tar.gz

Download URL aiohttp-0.22.3.tar.gz
Size 475.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c6698615ed6e3167cb35f7d3588596f98702528789410b6148706a5c583e8fc3
BLAKE2b-256 checksum
How to use checksums
29b7f273c09b120ae84d96c52ec0ebcfd623c5bf7fb1f2469b5d5fdddfe7be41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp35-cp35m-win_amd64.whl

Download URL aiohttp-0.22.3-cp35-cp35m-win_amd64.whl
Size 131.2 kB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
35e3c94985cfe4c93145cf2cfcf44a80401174f1f20a28b9fe6339573ab88c77
BLAKE2b-256 checksum
How to use checksums
7024d7888256ae59ee0ed187d6670b02085b6b7d6033708a93e6f7e309f708ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp35-cp35m-win32.whl

Download URL aiohttp-0.22.3-cp35-cp35m-win32.whl
Size 130.0 kB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
4c069a50ee867684bf23d3e96248f881444fd40c511b0581cb42314090ae8f2c
BLAKE2b-256 checksum
How to use checksums
8fc8fa6d827573bd9204b90f1e402ecc15f89bd7bbf247a5bf30fd476c2ba81f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp35-cp35m-manylinux1_x86_64.whl

Download URL aiohttp-0.22.3-cp35-cp35m-manylinux1_x86_64.whl
Size 148.1 kB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
8da4f3938b87e8379dedba8560a66b9bff3ff1d6a451bbbbf023b91392f27450
BLAKE2b-256 checksum
How to use checksums
8a4aabe36e3b386f15969ee2581ca99a9037ff2d766fdf0edb31c55726fb07b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp35-cp35m-manylinux1_i686.whl

Download URL aiohttp-0.22.3-cp35-cp35m-manylinux1_i686.whl
Size 145.4 kB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
23ba000908fa3390fff62ad749c3a09b32978ba8cd5832f98824f6bab773326d
BLAKE2b-256 checksum
How to use checksums
1230ffc4b09faa003bb9c060c1352abd1c712ea5294a801678a958f14100041c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp34-cp34m-win_amd64.whl

Download URL aiohttp-0.22.3-cp34-cp34m-win_amd64.whl
Size 129.1 kB
Tags CPython 3.4 CPython 3.4 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
28bbce54ef409ec02c30a463c209ea904f323e58b09e6813f2e95599acbb8d5a
BLAKE2b-256 checksum
How to use checksums
bef825bfc8f97b28c653e007455a3596dc8f7432d6d77d0d2c84b26e3b119c9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp34-cp34m-win32.whl

Download URL aiohttp-0.22.3-cp34-cp34m-win32.whl
Size 128.8 kB
Tags CPython 3.4 CPython 3.4 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
1b050caf10736e305eaf6c0acb252f53e6898765651532ed6a494ceee24eba4c
BLAKE2b-256 checksum
How to use checksums
60308f688ba87a5190450e308cd9c150e1f94347a430a56b9eedd3dc47885936
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp34-cp34m-manylinux1_x86_64.whl

Download URL aiohttp-0.22.3-cp34-cp34m-manylinux1_x86_64.whl
Size 148.2 kB
Tags CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
e4250da89e5ecc73cc02f84b87458ce87b4fbce07203819585767ac662762710
BLAKE2b-256 checksum
How to use checksums
2ce7f2468b23824eea20d9cc5d4de97162782382ddd8f74e4720c7173870b9b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / aiohttp-0.22.3-cp34-cp34m-manylinux1_i686.whl

Download URL aiohttp-0.22.3-cp34-cp34m-manylinux1_i686.whl
Size 145.5 kB
Tags CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
0aa8e51af7df93adb55e017c625d7f02c59a4f7e419f47fea679f736ecbdaadb
BLAKE2b-256 checksum
How to use checksums
c5cd935a312909a7ab8cc16ebf2d543cdc4c8cd8f82a023de7a16956137d38a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

3.9.5

76 release files

3.9.4

76 release files

3.9.3

76 release files

3.9.2

76 release files

3.9.1

76 release files

3.9.0

76 release files

3.8.5

87 release files

3.8.4

87 release files

3.8.3

87 release files

3.8.2

87 release files

3.8.1

72 release files

3.8.0

72 release files

3.7.4

37 release files

3.7.3

37 release files

3.7.2

33 release files

3.7.1

33 release files

3.7.0

33 release files

3.6.3

13 release files

3.6.1

13 release files

3.5.4

22 release files

3.5.3

22 release files

3.5.1

22 release files

3.5.0

22 release files

3.4.1

22 release files

3.4.0

22 release files

3.3.2

15 release files

3.3.0

9 release files

3.2.1

15 release files

3.1.3

15 release files

3.1.1

15 release files

3.1.0

15 release files

3.0.9

15 release files

3.0.8

14 release files

3.0.5

15 release files

3.0.4

15 release files

3.0.3

15 release files

3.0.2

15 release files

3.0.1

15 release files

3.0.0

11 release files

2.3.9

16 release files

2.3.8

16 release files

2.3.7

22 release files

2.3.5

22 release files

2.3.4

22 release files

2.3.3

22 release files

2.3.1

22 release files

2.3.0

13 release files

2.2.0

13 release files

2.1.0

13 release files

2.0.7

8 release files

2.0.5

13 release files

2.0.4

13 release files

2.0.3

13 release files

2.0.2

13 release files

2.0.1

13 release files

2.0.0

13 release files

1.3.5

7 release files

1.3.4

7 release files

1.3.3

13 release files

1.3.2

13 release files

1.3.0

9 release files

1.2.0

9 release files

1.1.6

9 release files

1.1.5

9 release files

1.1.4

9 release files

1.1.3

9 release files

1.1.2

9 release files

1.1.1

9 release files

1.1.0

9 release files

1.0.5

9 release files

1.0.3

9 release files

1.0.2

9 release files

1.0.1

9 release files

1.0.0

9 release files

0.22.4

9 release files

This release

0.22.3 This release

9 release files

0.22.2

9 release files

0.22.1

9 release files

0.22.0

9 release files

0.21.5

5 release files

0.21.4

5 release files

0.21.2

5 release files

0.21.1

5 release files

0.20.2

1 release file

0.20.1

1 release file

0.20.0

1 release file

0.19.0

1 release file

0.18.4

1 release file

0.18.3

1 release file

0.18.2

1 release file

0.18.1

1 release file

0.18.0

1 release file

0.17.4

1 release file

0.17.3

1 release file

0.17.2

1 release file

0.17.1

1 release file

0.17.0

1 release file

0.16.6

1 release file

0.16.5

1 release file

0.16.4

1 release file

0.16.3

1 release file

0.16.2

1 release file

0.16.1

1 release file

0.16.0

1 release file

0.15.3

1 release file

0.15.2

1 release file

0.15.1

1 release file

0.15.0

1 release file

0.14.4

1 release file

0.14.3

1 release file

0.14.2

1 release file

0.14.1

1 release file

0.14.0

1 release file

0.13.1

2 release files

0.13.0

2 release files

0.12.0

1 release file

0.11.0

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

1 release file

0.9.0

1 release file

0.8.4

1 release file

0.8.3

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.5

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page