aio-libs/aiohttp


Asynchronous HTTP client/server framework for asyncio and Python

https://docs.aiohttp.org

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 codecov.io 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

Client

To get something from the web:

import aiohttp
import asyncio

async def main():

    async with aiohttp.ClientSession() as session:
        async with session.get('http://python.org') 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()
loop.run_until_complete(main())

This prints:

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

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

Server

An example using a simple server:

# examples/server_simple.py
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(msg.data))
        elif msg.type == web.WSMsgType.binary:
            await ws.send_bytes(msg.data)
        elif msg.type == web.WSMsgType.close:
            break

    return ws


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

if __name__ == '__main__':
    web.run_app(app)

Documentation

https://aiohttp.readthedocs.io/

Demos

https://github.com/aio-libs/aiohttp-demos

External links

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

Communication channels

aio-libs discourse group: https://aio-libs.discourse.group

gitter chat https://gitter.im/aio-libs/Lobby

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

Requirements

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

License

aiohttp is offered under the Apache 2 license.

Keepsafe

The aiohttp community would like to thank Keepsafe (https://www.getkeepsafe.com) for its support in the early days of the project.

Source code

The latest developer version is available in a GitHub repository: https://github.com/aio-libs/aiohttp

Benchmarks

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

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
Created
Last updated
Last pushed

Top Contributors See all

Andrew Svetlov Nikolay Kim pyup.io 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

aiohttp
Async http client/server framework (asyncio)
Latest release 3.6.0a0 - Updated - 8.71K stars
aiohttp
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

mkiolokolo/aiohttp
Asynchronous HTTP client/server framework for asyncio and Python
Python - Apache-2.0 - Last pushed - 1 stars
gleb-chipiga/aiohttp
http client/server for asyncio (PEP-3156)
Python - Apache-2.0 - Last pushed - 1 stars
nibrag/aiohttp
Async http client/server framework (asyncio)
Python - Last pushed - 1 stars
tomchristie/aiohttp
Async http client/server framework (asyncio)
Python - Last pushed - 1 stars
antime/aiohttp
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