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

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-hypernode.com/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

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

Uploaded Source

Built Distributions

aiohttp-0.22.4-cp35-cp35m-win_amd64.whl (131.2 kB view details)

Uploaded CPython 3.5m Windows x86-64

aiohttp-0.22.4-cp35-cp35m-win32.whl (130.0 kB view details)

Uploaded CPython 3.5m Windows x86

aiohttp-0.22.4-cp35-cp35m-manylinux1_x86_64.whl (148.1 kB view details)

Uploaded CPython 3.5m

aiohttp-0.22.4-cp35-cp35m-manylinux1_i686.whl (145.4 kB view details)

Uploaded CPython 3.5m

aiohttp-0.22.4-cp34-cp34m-win_amd64.whl (129.1 kB view details)

Uploaded CPython 3.4m Windows x86-64

aiohttp-0.22.4-cp34-cp34m-win32.whl (128.8 kB view details)

Uploaded CPython 3.4m Windows x86

aiohttp-0.22.4-cp34-cp34m-manylinux1_x86_64.whl (148.2 kB view details)

Uploaded CPython 3.4m

aiohttp-0.22.4-cp34-cp34m-manylinux1_i686.whl (145.5 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for aiohttp-0.22.4.tar.gz
Algorithm Hash digest
SHA256 167ec7373a3319419834e6c61846b7267c5fc6748b9dd2504b7e9378b55afcdd
MD5 872f24d865e9ece06e08d67c4c14a0b6
BLAKE2b-256 b0dbf9c64d2c7e84fe333cc0360c9f5e3433f202021ed2cd66ae9c700b55c9bc

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 334f956a1908b46cead8568fa70ba80caab73780986ce65de28b08248e6656a5
MD5 83fdd16df0d9cefc0c3f2d1ae421d501
BLAKE2b-256 f4be787ab477c1a8b92d0f773318aa713976ce9efa2cde7750b2a635891026d7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 88bf0bb3eb3557229317a393bc2d5d1dbcb4b65170cedcf33e2e6b33acac72ac
MD5 d94440f371a72bc4038c88734bb8aae1
BLAKE2b-256 ac8ff83a3f807da64ed797fa502f939bc20c60cdcdd4f54591edabcdc1be07fb

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 40f96e8421d0d6e92e3a7a8d4ca30e87bdd972558f8814de9fe82b422e23ea83
MD5 cde9372e8168e3cb9d916e78cd2c91d4
BLAKE2b-256 75c753b297b957c5435a5e9317af5881f74c852fd51643694f2227fda2db3cd7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 18dcacae4decbca72002444f7901ce5f6419f2171ded919f6abf71176bef44be
MD5 e2e334b732ed4883f9a9b1d9667eacce
BLAKE2b-256 ca045ba7b9ee275b0479531e4ee460f9a8b6daf1a5ebcef49eccbdad08ffb3e4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 5c6941c4df28a518c122d3595eee6c3e1fd93e7ac0074187cad5a1e1ec77fa79
MD5 376657e7b258e1ff8f15106336552803
BLAKE2b-256 4c6a912e3af457fed0b5af140a89139f1d62b3afc7590bb77f73d40d74167042

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 e447c5063642333d7f789e51b9a9cb4b784e483222ccbb35db93769d7517bb11
MD5 b0cc7ff91a3bd0301d90133a965f8473
BLAKE2b-256 91c75585a7ff01b4c745867c3d1eac458c06c7174f4982d52dfce6ab0390ad1e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 457e74752cca12c25c74d2745fc875f26fe49218f308bf1d1c99461f146216f8
MD5 87ff487badfe6d2909948d73844a31a0
BLAKE2b-256 f71658e341b34d4f3081301c0fab68deb782e8e4ad37f1c402a68ad281b1dbdb

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.4-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 c237850ddef9236abe0de9a3e10572949e0cb805e376ffea7f1f7526c0cc2caf
MD5 804f7a1dc1d2ab4bc6f6ad133fff1c6c
BLAKE2b-256 accd8931ae288fa2c7dfb9b625b9987cc62dea97f0b305579b95bfa9fd8e0fc6

See more details on using hashes here.

Provenance

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