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

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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m Windows x86

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

Uploaded CPython 3.5m

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

Uploaded CPython 3.5m

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

Uploaded CPython 3.4m Windows x86-64

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

Uploaded CPython 3.4m Windows x86

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

Uploaded CPython 3.4m

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

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for aiohttp-0.22.3.tar.gz
Algorithm Hash digest
SHA256 c6698615ed6e3167cb35f7d3588596f98702528789410b6148706a5c583e8fc3
MD5 8c75aa7aad0c428a0dbed1380e9c0807
BLAKE2b-256 29b7f273c09b120ae84d96c52ec0ebcfd623c5bf7fb1f2469b5d5fdddfe7be41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 35e3c94985cfe4c93145cf2cfcf44a80401174f1f20a28b9fe6339573ab88c77
MD5 172175b36bdd09dead3ca3d6d5cd5629
BLAKE2b-256 7024d7888256ae59ee0ed187d6670b02085b6b7d6033708a93e6f7e309f708ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 4c069a50ee867684bf23d3e96248f881444fd40c511b0581cb42314090ae8f2c
MD5 2fe9ffab06060c75faad17c49f4d13d0
BLAKE2b-256 8fc8fa6d827573bd9204b90f1e402ecc15f89bd7bbf247a5bf30fd476c2ba81f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8da4f3938b87e8379dedba8560a66b9bff3ff1d6a451bbbbf023b91392f27450
MD5 b85e5c06ab167ec0d585d436d44f4e62
BLAKE2b-256 8a4aabe36e3b386f15969ee2581ca99a9037ff2d766fdf0edb31c55726fb07b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 23ba000908fa3390fff62ad749c3a09b32978ba8cd5832f98824f6bab773326d
MD5 f50387b72362cc798e4c8a8e20ffa78c
BLAKE2b-256 1230ffc4b09faa003bb9c060c1352abd1c712ea5294a801678a958f14100041c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 28bbce54ef409ec02c30a463c209ea904f323e58b09e6813f2e95599acbb8d5a
MD5 a489deb99d3197ee94844bd4468fe38b
BLAKE2b-256 bef825bfc8f97b28c653e007455a3596dc8f7432d6d77d0d2c84b26e3b119c9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 1b050caf10736e305eaf6c0acb252f53e6898765651532ed6a494ceee24eba4c
MD5 6eddbd98ef7bc1ae390213e2dfa28c34
BLAKE2b-256 60308f688ba87a5190450e308cd9c150e1f94347a430a56b9eedd3dc47885936

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e4250da89e5ecc73cc02f84b87458ce87b4fbce07203819585767ac662762710
MD5 1c508d229a075b38042e360721008280
BLAKE2b-256 2ce7f2468b23824eea20d9cc5d4de97162782382ddd8f74e4720c7173870b9b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiohttp-0.22.3-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 0aa8e51af7df93adb55e017c625d7f02c59a4f7e419f47fea679f736ecbdaadb
MD5 c787878aceeb8a176637168a69f78be9
BLAKE2b-256 c5cd935a312909a7ab8cc16ebf2d543cdc4c8cd8f82a023de7a16956137d38a3

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