http client/server for asyncio
Project description
http client/server for asyncio
Requirements
- Python >= 3.3
- asyncio https://pypi.python.org/pypi/asyncio/0.4.1
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.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.8.3.tar.gz
(80.5 kB
view hashes)