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 (experimental)

In aiohttp 0.10 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 = 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.10.2 (11-19-2014)

  • Don’t unquote environ[‘PATH_INFO’] in wsgi.py #177

0.10.1 (11-17-2014)

  • aiohttp.web.HTTPException and descendants now files response body with string like 400: NotFound

  • Fix multidict __iter__, the method should iterate over keys, not (key, value) pairs.

0.10.0 (11-13-2014)

  • Add aiohttp.web subpackage for highlevel http server support.

  • Add reason optional parameter to aiohttp.protocol.Response ctor.

  • Fix aiohttp.client bug for sending file without content-type.

  • Change error text for connection closed between server responses from ‘Can not read status line’ to explicit ‘Connection closed by server’

  • Drop closed connections from connector #173

  • Set server.transport to None on .closing() #172

0.9.3 (10-30-2014)

  • Fix compatibility with asyncio 3.4.1+ #170

0.9.2 (10-16-2014)

  • Improve redirect handling #157

  • Send raw files as is #153

  • Better websocket support #150

0.9.1 (08-30-2014)

  • Added MultiDict support for client request params and data #114.

  • Fixed parameter type for IncompleteRead exception #118.

  • Strictly require ASCII headers names and values #137

  • Keep port in ProxyConnector #128.

  • Python 3.4.1 compatibility #131.

0.9.0 (07-08-2014)

  • Better client basic authentication support #112.

  • Fixed incorrect line splitting in HttpRequestParser #97.

  • Support StreamReader and DataQueue as request data.

  • Client files handling refactoring #20.

  • Backward incompatible: Replace DataQueue with StreamReader for request payload #87.

0.8.4 (07-04-2014)

  • Change ProxyConnector authorization parameters.

0.8.3 (07-03-2014)

  • Publish TCPConnector properties: verify_ssl, family, resolve, resolved_hosts.

  • Don’t parse message body for HEAD responses.

  • Refactor client response decoding.

0.8.2 (06-22-2014)

  • Make ProxyConnector.proxy immutable property.

  • Make UnixConnector.path immutable property.

  • Fix resource leak for aiohttp.request() with implicit connector.

  • Rename Connector’s reuse_timeout to keepalive_timeout.

0.8.1 (06-18-2014)

  • Use case insensitive multidict for server request/response headers.

  • MultiDict.getall() accepts default value.

  • Catch server ConnectionError.

  • Accept MultiDict (and derived) instances in aiohttp.request header argument.

  • Proxy ‘CONNECT’ support.

0.8.0 (06-06-2014)

  • Add support for utf-8 values in HTTP headers

  • Allow to use custom response class instead of HttpResponse

  • Use MultiDict for client request headers

  • Use MultiDict for server request/response headers

  • Store response headers in ClientResponse.headers attribute

  • Get rid of timeout parameter in aiohttp.client API

  • Exceptions refactoring

0.7.3 (05-20-2014)

  • Simple HTTP proxy support.

0.7.2 (05-14-2014)

  • Get rid of __del__ methods

  • Use ResourceWarning instead of logging warning record.

0.7.1 (04-28-2014)

  • Do not unquote client request urls.

  • Allow multple waiters on transport drain.

  • Do not return client connection to pool in case of exceptions.

  • Rename SocketConnector to TCPConnector and UnixSocketConnector to UnixConnector.

0.7.0 (04-16-2014)

  • Connection flow control.

  • Http client session/connection pool refactoring.

  • Better handling for bad server requests.

0.6.5 (03-29-2014)

  • Added client session reuse timeout.

  • Better client request cancellation support.

  • Better handling responses without content length.

  • Added HttpClient verify_ssl parameter support.

0.6.4 (02-27-2014)

  • Log content-length missing warning only for put and post requests.

0.6.3 (02-27-2014)

  • Better support for server exit.

  • Read response body until eof if content-length is not defined #14

0.6.2 (02-18-2014)

  • Fix trailing char in allowed_methods.

  • Start slow request timer for first request.

0.6.1 (02-17-2014)

  • Added utility method HttpResponse.read_and_close()

  • Added slow request timeout.

  • Enable socket SO_KEEPALIVE if available. (@polymorphm)

0.6.0 (02-12-2014)

  • Better handling for process exit.

0.5.0 (01-29-2014)

  • Allow to use custom HttpRequest client class.

  • Use gunicorn keepalive setting for async worker.

  • Log leaking responses.

  • python 3.4 compatibility

0.4.4 (11-15-2013)

  • Resolve only AF_INET family, because it is not clear how to pass extra info to asyncio.

0.4.3 (11-15-2013)

  • Allow to wait completion of request with HttpResponse.wait_for_close()

0.4.2 (11-14-2013)

  • Handle exception in client request stream.

  • Prevent host resolving for each client request.

0.4.1 (11-12-2013)

  • Added client support for expect: 100-continue header.

0.4 (11-06-2013)

  • Added custom wsgi application close procedure

  • Fixed concurrent host failure in HttpClient

0.3 (11-04-2013)

  • Added PortMapperWorker

  • Added HttpClient

  • Added tcp connection timeout to http client

  • Better client connection errors handling

  • Gracefully handle process exit

0.2

  • Fix packaging

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

Uploaded Source

Built Distribution

aiohttp-0.10.2-py3-none-any.whl (59.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for aiohttp-0.10.2.tar.gz
Algorithm Hash digest
SHA256 36a3999eea033f22b9d3ff38d4f5242abbf5b84a4e5848fbf43cd0161992af27
MD5 da8c41d31df3e23a20348839c7560545
BLAKE2b-256 853db933a0c89ec62391065ad0df7c2d6c3145ce43afa6dbc025f1c875d9c5b6

See more details on using hashes here.

File details

Details for the file aiohttp-0.10.2-py3-none-any.whl.

File metadata

File hashes

Hashes for aiohttp-0.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 10d9bbaec4f9419005be598441fa4ab0ea52ec56b9565e7b91e6898546cc0a59
MD5 61862b054330024340ba6b1448c216eb
BLAKE2b-256 fa43bc6fc55dd3e0dc34ec6ba8d6ecb2ae45eb09063389a4f64654c90f68f018

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