Skip to main content

http client/server for asyncio

Project description

http client/server for asyncio

aiohttp logo https://secure.travis-ci.org/KeepSafe/aiohttp.png

Requirements

License

aiohttp is offered under the Apache 2 license.

Documentation

http://aiohttp.readthedocs.org/

Getting started

Client

To retrieve something from the web:

import aiohttp

def get_body(url):
    response = yield from aiohttp.request('GET', url)
    return (yield from response.read())

You can use the get command like this anywhere in your asyncio powered program:

response = yield from aiohttp.request('GET', 'http://python.org')
body = yield from response.read()
print(body)

If you want to use timeouts for aiohttp client side please use standard asyncio approach:

yield from asyncio.wait_for(request('GET', url), 10)

Server

In aiohttp 0.12 we’ve added highlevel API for web HTTP server.

There is simple usage example:

import asyncio
from aiohttp import web


@asyncio.coroutine
def handle(request):
    name = request.match_info.get('name', "Anonymous")
    text = "Hello, " + name
    return web.Response(body=text.encode('utf-8'))


@asyncio.coroutine
def init(loop):
    app = web.Application(loop=loop)
    app.router.add_route('GET', '/{name}', handle)

    srv = yield from loop.create_server(app.make_handler(),
                                        '127.0.0.1', 8080)
    print("Server started at http://127.0.0.1:8080")
    return srv

loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()

CHANGES

0.14.2 (Unreleased)

  • Connections leak in BaseConnector #253

  • Do not swallow websocket reader exceptions #255

  • web.Request’s read, text, json are memorized #250

0.14.1 (15/01/2014)

  • HttpMessage._add_default_headers does not overwrite existing headers #216

  • Expose multidict classes at package level

  • add aiohttp.web.WebSocketResponse

  • According to RFC 6455 websocket subprotocol preference order is provided by client, not by server

  • websocket’s ping and pong accept optional message parameter

  • multidict views do not accept getall parameter anymore, it returns the full body anyway.

  • multidicts have optional Cython optimization, cythonized version of multidicts is about 5 times faster than pure Python.

  • multidict.getall() returns list, not tuple.

  • Backward imcompatible change: now there are two mutable multidicts (MultiDict, CIMultiDict) and two immutable multidict proxies (MultiDictProxy and CIMultiDictProxy). Previous edition of multidicts was not a part of public API BTW.

  • Router refactoring to push Not Allowed and Not Found in middleware processing

  • Convert ConnectionError to aiohttp.DisconnectedError and don’t eat ConnectionError exceptions from web handlers.

  • Remove hop headers from Response class, wsgi response still uses hop headers.

  • Allow to send raw chunked encoded response.

  • Allow to encode output bytes stream into chunked encoding.

  • Allow to compress output bytes stream with deflate encoding.

  • Server has 75 seconds keepalive timeout now, was non-keepalive by default.

  • Application doesn’t accept **kwargs anymore (#243).

  • Request is inherited from dict now for making per-request storage to middlewares (#242).

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

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for aiohttp-0.14.2.tar.gz
Algorithm Hash digest
SHA256 c2c7a3c06436196a43013b038154bd676ffad3a4bc705f20f170e02d35330bf9
MD5 c42d70445ae313e3f0c43d5e486c9cc2
BLAKE2b-256 b4e4e15ef6076a94bfe708d5897861d54781d2547f7263fdd54534e791dadce8

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