Skip to main content

http client/server for asyncio

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

Requirements

License

aiohttp is offered under the BSD license.

Getting started

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)

The signature of request is the following:

request(method, url, *,
        params=None,
        data=None,
        headers=None,
        cookies=None,
        files=None,
        auth=None,
        allow_redirects=True,
        max_redirects=10,
        encoding='utf-8',
        version=(1, 1),
        compress=None,
        chunked=None,
        expect100=False,
        connector=None,
        read_until_eof=True,
        request_class=None,
        response_class=None,
        loop=None
)

It constructs and sends a request. It returns response object. Parameters are explained as follow:

  • method: HTTP method

  • url: Request url

  • params: (optional) Dictionary or bytes to be sent in the query string of the new request

  • data: (optional) Dictionary, bytes, or file-like object to send in the body of the request

  • headers: (optional) Dictionary of HTTP Headers to send with the request

  • cookies: (optional) Dict object to send with the request

  • files: (optional) Dictionary of ‘name’: file-like-objects for multipart encoding upload

  • auth: (optional) BasicAuth tuple to enable Basic HTTP Basic Auth

  • allow_redirects: (optional) Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.

  • compress: Boolean. Set to True if request has to be compressed with deflate encoding.

  • chunked: Boolean or Integer. Set to chunk size for chunked transfer encoding.

  • expect100: Boolean. Expect 100-continue response from server.

  • connector: aiohttp.connector.BaseConnector instance to support connection pooling and session cookies.

  • read_until_eof: Read response until eof if response does not have Content-Length header.

  • request_class: Custom Request class implementation.

  • response_class: Custom Response class implementation.

  • loop: Optional event loop.

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

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

Gunicorn worker

Paster configuration example:

[server:main]
use = egg:gunicorn#main
host = 0.0.0.0
port = 8080
worker_class = aiohttp.worker.AsyncGunicornWorker

CHANGES

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

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

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for aiohttp-0.8.4.tar.gz
Algorithm Hash digest
SHA256 c18575bc8ea8a75be3ced0ae11954fa8c2adb0956cde58aec4d049048c8c0b33
MD5 7ea863a56cdfb457d27a5cdb3db9f896
BLAKE2b-256 78db9c441aceae4ecd65a002e7df48b629228b2bf3d3b3e576480c99967b4ab3

See more details on using hashes here.

Release history Release notifications | RSS feed

4.0.0a1

9 files

4.0.0a0

22 files

3.14.3

119 files

3.14.2

119 files

3.14.1

119 files

3.14.0

119 files

3.13.5

120 files

3.13.4

120 files

3.13.3

120 files

3.13.2

120 files

3.13.1

120 files

3.13.0

120 files

3.12.15

86 files

3.12.14

86 files

3.12.13

86 files

3.12.12

86 files

3.12.11

86 files

3.12.10

86 files

3.12.9

86 files

3.12.8

86 files

3.12.7

86 files

3.12.6

86 files

3.12.4

86 files

3.12.3

86 files

3.12.2

86 files

3.12.1

86 files

3.12.0

86 files

3.11.18

81 files

3.11.17

81 files

3.11.16

81 files

3.11.15

81 files

3.11.14

81 files

3.11.13

81 files

3.11.12

81 files

3.11.11

76 files

3.11.10

76 files

3.11.9

76 files

3.11.8

76 files

3.11.7

76 files

3.11.6

76 files

3.11.5

76 files

3.11.4

76 files

3.11.3

76 files

3.11.2

76 files

3.11.1

76 files

3.11.0

76 files

3.10.11

91 files

3.10.10

91 files

3.10.9

91 files

3.10.8

91 files

3.10.7

91 files

3.10.6

91 files

3.10.5

91 files

3.10.4

76 files

3.10.3

76 files

3.10.2

76 files

3.10.1

76 files

3.10.0

76 files

3.9.5

76 files

3.9.4

76 files

3.9.3

76 files

3.9.2

76 files

3.9.1

76 files

3.9.0

76 files

3.8.6

87 files

3.8.5

87 files

3.8.4

87 files

3.8.3

87 files

3.8.2

87 files

3.8.1

72 files

3.8.0

72 files

3.7.4.post0

37 files

3.7.4

37 files

3.7.3

37 files

3.7.2

33 files

3.7.1

33 files

3.7.0

33 files

3.6.3

13 files

3.6.2

12 files

3.6.1

13 files

3.6.0

14 files

3.5.4

22 files

3.5.3

22 files

3.5.2

16 files

3.5.1

22 files

3.5.0

22 files

3.4.4

22 files

3.4.3

20 files

3.4.2

22 files

3.4.1

22 files

3.4.0

22 files

3.3.2

15 files

3.3.1

15 files

3.3.0

9 files

3.2.1

15 files

3.2.0

15 files

3.1.3

15 files

3.1.2

15 files

3.1.1

15 files

3.1.0

15 files

3.0.9

15 files

3.0.8

14 files

3.0.7

11 files

3.0.6

15 files

3.0.5

15 files

3.0.4

15 files

3.0.3

15 files

3.0.2

15 files

3.0.1

15 files

3.0.0

11 files

2.3.10

22 files

2.3.9

16 files

2.3.8

16 files

2.3.7

22 files

2.3.6

22 files

2.3.5

22 files

2.3.4

22 files

2.3.3

22 files

2.3.2

22 files

2.3.1

22 files

2.3.0

13 files

2.2.5

13 files

2.2.4

13 files

2.2.3

13 files

2.2.2

13 files

2.2.1

13 files

2.2.0

13 files

2.1.0

13 files

2.0.7

8 files

2.0.6

13 files

2.0.5

13 files

2.0.4

13 files

2.0.3

13 files

2.0.2

13 files

2.0.1

13 files

2.0.0

13 files

1.3.5

7 files

1.3.4

7 files

1.3.3

13 files

1.3.2

13 files

1.3.1

11 files

1.3.0

9 files

1.2.0

9 files

1.1.6

9 files

1.1.5

9 files

1.1.4

9 files

1.1.3

9 files

1.1.2

9 files

1.1.1

9 files

1.1.0

9 files

1.0.5

9 files

1.0.3

9 files

1.0.2

9 files

1.0.1

9 files

1.0.0

9 files

0.22.5

8 files

0.22.4

9 files

0.22.3

9 files

0.22.2

9 files

0.22.1

9 files

0.22.0

9 files

0.21.6

5 files

0.21.5

5 files

0.21.4

5 files

0.21.2

5 files

0.21.1

5 files

0.21.0

5 files

0.20.2

1 file

0.20.1

1 file

0.20.0

1 file

0.19.0

1 file

0.18.4

1 file

0.18.3

1 file

0.18.2

1 file

0.18.1

1 file

0.18.0

1 file

0.17.4

1 file

0.17.3

1 file

0.17.2

1 file

0.17.1

1 file

0.17.0

1 file

0.16.6

1 file

0.16.5

1 file

0.16.4

1 file

0.16.3

1 file

0.16.2

1 file

0.16.1

1 file

0.16.0

1 file

0.15.3

1 file

0.15.2

1 file

0.15.1

1 file

0.15.0

1 file

0.14.4

1 file

0.14.3

1 file

0.14.2

1 file

0.14.1

1 file

0.14.0

1 file

0.13.1

2 files

0.13.0

2 files

0.12.0

1 file

0.11.0

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

1 file

0.9.0

1 file

This release

0.8.4 This release

1 file

0.8.3

1 file

0.8.2

1 file

0.8.1

1 file

0.8.0

1 file

0.7.3

1 file

0.7.2

1 file

0.7.1

1 file

0.7.0

1 file

0.6.5

1 file

0.6.4

1 file

0.6.3

1 file

0.6.2

1 file

0.6.1

1 file

0.6.0

1 file

0.5.0

1 file

0.4.4

1 file

0.4.3

1 file

0.4.2

1 file

0.4.1

1 file

0.4

1 file

0.3

1 file

0.2

1 file

0.1

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page