http client/server for asyncio
Project description
http client/server for asyncio
Requirements
- Python >= 3.3
- asyncio https://pypi.python.org/pypi/asyncio
License
aiohttp is offered under the Apache 2 license.
Documentation
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.0 (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).
0.13.1 (12-31-2014)
- Add aiohttp.web.StreamResponse.started property #213
- Html escape traceback text in ServerHttpProtocol.handle_error
- Mention handler and middlewares in aiohttp.web.RequestHandler.handle_request on error (#218)
0.13.0 (12-29-2014)
- StreamResponse.charset converts value to lower-case on assigning.
- Chain exceptions when raise ClientRequestError.
- Support custom regexps in route variables #204
- Fixed graceful shutdown, disable keep-alive on connection closing.
- Decode http message with utf-8 encoding, some servers send headers in utf-8 encoding #207
- Support aiohtt.web middlewares #209
- Add ssl_context to TCPConnector #206
0.12.0 (12-12-2014)
- Deep refactoring of aiohttp.web in backward-incompatible manner. Sorry, we have to do this.
- Automatically force aiohttp.web handlers to coroutines in UrlDispatcher.add_route() #186
- Rename Request.POST() function to Request.post()
- Added POST attribute
- Response processing refactoring: constructor does’t accept Request instance anymore.
- Pass application instance to finish callback
- Exceptions refactoring
- Do not unquote query string in aiohttp.web.Request
- Fix concurrent access to payload in RequestHandle.handle_request()
- Add access logging to aiohttp.web
- Gunicorn worker for aiohttp.web
- Removed deprecated AsyncGunicornWorker
- Removed deprecated HttpClient
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.1.tar.gz
(1.3 MB
view hashes)