Skip to main content

http client/server for asyncio

Project description

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

http://aiohttp.readthedocs.org/

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.21.0 (02-04-2016)

  • Introduce on_shutdown signal #722

  • Implement raw input headers #726

  • Implement web.run_app utility function #734

  • Introduce on_cleanup signal

  • Deprecate Application.finish() / Application.register_on_finish() in favor of on_cleanup.

  • Get rid of bare aiohttp.request(), aiohttp.get() and family in docs #729

  • Deprecate bare aiohttp.request(), aiohttp.get() and family #729

  • Refactor keep-alive support #737:

    • Enable keepalive for HTTP 1.0 by default

    • Disable it for HTTP 0.9 (who cares about 0.9, BTW?)

    • For keepalived connections

      • Send Connection: keep-alive for HTTP 1.0 only

      • don’t send Connection header for HTTP 1.1

    • For non-keepalived connections

      • Send Connection: close for HTTP 1.1 only

      • don’t send Connection header for HTTP 1.0

  • Add version parameter to ClientSession constructor, deprecate it for session.request() and family #736

  • Enable access log by default #735

  • Deprecate app.router.register_route() (the method was not documented intentionally BTW).

  • Deprecate app.router.named_routes() in favor of app.router.named_resources()

  • route.add_static accepts pathlib.Path now #743

  • Add command line support: $ python -m aiohttp.web package.main #740

  • FAQ section was added to docs. Enjoy and fill free to contribute new topics

  • Add async context manager support to ClientSession

  • Document ClientResponse’s host, method, url properties

  • Use CORK/NODELAY in client API #748

  • ClientSession.close and Connector.close are coroutines now

  • Close client connection on exception in ClientResponse.release()

  • Allow to read multipart parts without content-length specified #750

  • Add support for unix domain sockets to gunicorn worker #470

  • Add test for default Expect handler #601

  • Add the first demo project

  • Rename loader keyword argument in web.Request.json method. #646

  • Add local socket binding for TCPConnector #678

Project details


Release history Release notifications | RSS feed

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.21.0.tar.gz (527.6 kB view details)

Uploaded Source

Built Distributions

aiohttp-0.21.0-cp35-none-win_amd64.whl (243.3 kB view details)

Uploaded CPython 3.5 Windows x86-64

aiohttp-0.21.0-cp35-none-win32.whl (234.8 kB view details)

Uploaded CPython 3.5 Windows x86

aiohttp-0.21.0-cp34-none-win_amd64.whl (240.7 kB view details)

Uploaded CPython 3.4 Windows x86-64

aiohttp-0.21.0-cp34-none-win32.whl (234.8 kB view details)

Uploaded CPython 3.4 Windows x86

File details

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

File metadata

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

File hashes

Hashes for aiohttp-0.21.0.tar.gz
Algorithm Hash digest
SHA256 fdd7390ec464b35de7779e58144025ef52425c2d963d1381fbe6809a64b842a1
MD5 3cee74aa960393c4ec8ef7af97bd462c
BLAKE2b-256 340fee701dd39cd21b1e07ca08158b27bf18d82952d51bd765e7833c85e9425b

See more details on using hashes here.

File details

Details for the file aiohttp-0.21.0-cp35-none-win_amd64.whl.

File metadata

File hashes

Hashes for aiohttp-0.21.0-cp35-none-win_amd64.whl
Algorithm Hash digest
SHA256 f64fc4e6319851ea49be6986d588946e979460fae67b50ec15978016d5ec3068
MD5 584644825f8a33434c23a51181ca8d0c
BLAKE2b-256 4cce149dbdf8d98f05e5b78c90cd3c0724c0622991f334f26aefabe28278f944

See more details on using hashes here.

File details

Details for the file aiohttp-0.21.0-cp35-none-win32.whl.

File metadata

File hashes

Hashes for aiohttp-0.21.0-cp35-none-win32.whl
Algorithm Hash digest
SHA256 25bb1b87bcb418375c661dae83bdf004121e14bfdb740e6f57763331046d5d22
MD5 af0624f03501e79e58830a9dd2de53c3
BLAKE2b-256 87fc45e9ad4308b14b612b2f19c579bbc8a12f4972129bd71e704cfa14317074

See more details on using hashes here.

File details

Details for the file aiohttp-0.21.0-cp34-none-win_amd64.whl.

File metadata

File hashes

Hashes for aiohttp-0.21.0-cp34-none-win_amd64.whl
Algorithm Hash digest
SHA256 f3b14ae0bdf796e7005aaaf98b312a86131cbc8a5cc43f65d0c8fd8dad72597c
MD5 52e14d711115deb0138f8185a9f56055
BLAKE2b-256 88e74059ae21abbea717e55e1f5879d1b27989c48a7811148a837600ae6035cd

See more details on using hashes here.

File details

Details for the file aiohttp-0.21.0-cp34-none-win32.whl.

File metadata

File hashes

Hashes for aiohttp-0.21.0-cp34-none-win32.whl
Algorithm Hash digest
SHA256 0eb92c60ea23eee87b3ebfcf46071ab15087fa2e89e2fbf938e0825f72e34689
MD5 d64c78e1a3a8f784ecd8019c5a7f64f7
BLAKE2b-256 cf6b341fce75aa969d1ede5ab2967a7e46aa59699d0f0655b9c077f4c5c152be

See more details on using hashes here.

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