Asynchronous HTTP client/server framework for asyncio and Python

License: Apache-2.0

Language: Python

Keywords: aiohttp, async, asyncio, http, http-client, http-server, python

Async http client/server framework

aiohttp logo

Azure Pipelines status for master branch status for master branch Latest PyPI package version Latest Read The Docs Discourse status Chat on Gitter

Key Features

  • Supports both client and server side of HTTP protocol.
  • Supports both client and server Web-Sockets out-of-the-box and avoids Callback Hell.
  • Provides Web-server with middlewares and plugable routing.

Getting started


To get something from the web:

import aiohttp
import asyncio

async def main():

    async with aiohttp.ClientSession() as session:
        async with session.get('') as response:

            print("Status:", response.status)
            print("Content-type:", response.headers['content-type'])

            html = await response.text()
            print("Body:", html[:15], "...")

loop = asyncio.get_event_loop()

This prints:

Status: 200
Content-type: text/html; charset=utf-8
Body: <!doctype html> ...

Comming from requests ? Read why we need so many lines.


An example using a simple server:

# examples/
from aiohttp import web

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

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

    async for msg in ws:
        if msg.type == web.WSMsgType.text:
            await ws.send_str("Hello, {}".format(
        elif msg.type == web.WSMsgType.binary:
            await ws.send_bytes(
        elif msg.type == web.WSMsgType.close:

    return ws

app = web.Application()
app.add_routes([web.get('/', handle),
                web.get('/echo', wshandle),
                web.get('/{name}', handle)])

if __name__ == '__main__':



External links

Feel free to make a Pull Request for adding your link to these pages!

Communication channels

aio-libs discourse group:

gitter chat

We support Stack Overflow. Please add aiohttp tag to your question there.


Optionally you may install the cChardet and aiodns libraries (highly recommended for sake of speed).


aiohttp is offered under the Apache 2 license.


The aiohttp community would like to thank Keepsafe ( for its support in the early days of the project.

Source code

The latest developer version is available in a GitHub repository:


If you are interested in efficiency, the AsyncIO community maintains a list of benchmarks on the official wiki:

Project Statistics

Sourcerank 21
Repository Size 15.2 MB
Stars 8,712
Forks 1,302
Watchers 240
Open issues 266
Dependencies 50
Contributors 495
Tags 214
Last updated
Last pushed

Top Contributors See all

Andrew Svetlov Nikolay Kim bot Sviatoslav Sydorenko Alexander Shorin Alexey Popravka dependabot-preview[bot] Jashandeep Sohi Samuel Colvin Anton Kasyanov Pau Freixes Arthur Darcet Nikolay Novik Vladimir Rutsky redixin Andrew Leech Коренберг Марк Manuel Miranda Alexander Dutton dependabot[bot]

Packages Referencing this Repo

Async http client/server framework (asyncio)
Latest release 3.6.0a0 - Updated - 8.71K stars
Asynchronous HTTP client/server framework for asyncio and Python
Latest release 3.6.1 - Updated - 8.71K stars

Recent Tags See all

v3.6.2 October 09, 2019
v3.6.2a2 October 09, 2019
v3.6.2a1 October 09, 2019
v3.6.2a0 October 09, 2019
v4.0.0a1 October 09, 2019
v3.6.1 September 19, 2019
v3.6.1b4 September 17, 2019
v3.6.1b3 September 15, 2019
v3.6.0 September 06, 2019
v3.6.0b0 September 05, 2019
v3.6.0a12 August 29, 2019
v3.6.0a11 August 29, 2019
v3.6.0a10 August 29, 2019
v3.6.0a9 August 29, 2019
v3.6.0a8 August 20, 2019

Interesting Forks See all

Asynchronous HTTP client/server framework for asyncio and Python
Python - Apache-2.0 - Last pushed - 1 stars
http client/server for asyncio (PEP-3156)
Python - Apache-2.0 - Last pushed - 1 stars
Async http client/server framework (asyncio)
Python - Last pushed - 1 stars
Async http client/server framework (asyncio)
Python - Last pushed - 1 stars
Async http client/server framework (asyncio)
Python - Updated - 1 stars

Something wrong with this page? Make a suggestion

Last synced: 2019-11-12 23:34:20 UTC

Login to resync this repository