http client/server for asyncio
Project description
http client/server for asyncio
Features
Supports both client and server side of HTTP protocol.
Supports both client and server Web-Sockets out-of-the-box.
Web-server has middlewares and pluggable routing.
Getting started
Client
To retrieve something from the web:
import aiohttp
import asyncio
async def fetch(session, url):
with aiohttp.Timeout(10):
async with session.get(url) as response:
return await response.text()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
with aiohttp.ClientSession(loop=loop) as session:
html = loop.run_until_complete(
fetch(session, 'http://python.org'))
print(html)
Server
This is simple usage example:
from aiohttp import web
async def handle(request):
name = request.match_info.get('name', "Anonymous")
text = "Hello, " + name
return web.Response(body=text.encode('utf-8'))
async def wshandler(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.tp == web.MsgType.text:
ws.send_str("Hello, {}".format(msg.data))
elif msg.tp == web.MsgType.binary:
ws.send_bytes(msg.data)
elif msg.tp == web.MsgType.close:
break
return ws
app = web.Application()
app.router.add_route('GET', '/echo', wshandler)
app.router.add_route('GET', '/{name}', handle)
web.run_app(app)
Note: examples are written for Python 3.5+ and utilize PEP-492 aka async/await. If you are using Python 3.4 please replace await with yield from and async def with @coroutine e.g.:
async def coro(...): ret = await f()
shoud be replaced by:
@asyncio.coroutine def coro(...): ret = yield from f()
Documentation
Discussion list
aio-libs google group: https://groups.google.com/forum/#!forum/aio-libs
Requirements
Python >= 3.4.1
Optionally you may install cChardet library: https://pypi.python.org/pypi/cchardet/1.0.0
License
aiohttp is offered under the Apache 2 license.
Source code
The latest developer version is available in a github repository: https://github.com/KeepSafe/aiohttp
Benchmarks
If you are interested in by efficiency, AsyncIO community maintains a list of benchmarks on the official wiki: https://github.com/python/asyncio/wiki/Benchmarks
CHANGES
0.21.5 (04-22-2016)
Fix command line arg parsing #797
0.21.4 (03-12-2016)
Fix ResourceAdapter: dont add method to allowed if resource is not match #826
Fix Resouce: append found method to returned allowed methods
0.21.2 (02-16-2016)
Fix a regression: support for handling ~/path in static file routes was broken #782
0.21.1 (02-10-2016)
Make new resources classes public #767
Add router.resources() view
Fix cmd-line parameter names in doc
0.21.0 (02-04-2016)
Introduce on_shutdown signal #722
Implement raw input headers #726
Implement web.run_app utility function #734
Introduce on_cleanup signal
Deprecate Application.finish() / Application.register_on_finish() in favor of on_cleanup.
Get rid of bare aiohttp.request(), aiohttp.get() and family in docs #729
Deprecate bare aiohttp.request(), aiohttp.get() and family #729
Refactor keep-alive support #737:
Enable keepalive for HTTP 1.0 by default
Disable it for HTTP 0.9 (who cares about 0.9, BTW?)
For keepalived connections
Send Connection: keep-alive for HTTP 1.0 only
don’t send Connection header for HTTP 1.1
For non-keepalived connections
Send Connection: close for HTTP 1.1 only
don’t send Connection header for HTTP 1.0
Add version parameter to ClientSession constructor, deprecate it for session.request() and family #736
Enable access log by default #735
Deprecate app.router.register_route() (the method was not documented intentionally BTW).
Deprecate app.router.named_routes() in favor of app.router.named_resources()
route.add_static accepts pathlib.Path now #743
Add command line support: $ python -m aiohttp.web package.main #740
FAQ section was added to docs. Enjoy and fill free to contribute new topics
Add async context manager support to ClientSession
Document ClientResponse’s host, method, url properties
Use CORK/NODELAY in client API #748
ClientSession.close and Connector.close are coroutines now
Close client connection on exception in ClientResponse.release()
Allow to read multipart parts without content-length specified #750
Add support for unix domain sockets to gunicorn worker #470
Add test for default Expect handler #601
Add the first demo project
Rename loader keyword argument in web.Request.json method. #646
Add local socket binding for TCPConnector #678
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
Built Distributions
File details
Details for the file aiohttp-0.21.5.tar.gz
.
File metadata
- Download URL: aiohttp-0.21.5.tar.gz
- Upload date:
- Size: 529.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bac5c883721e0818e405597d2778f08a38cc097df01f574462de2cc4f8090559 |
|
MD5 | 8e10aeb6fb49c819a7a88de1b9ef281b |
|
BLAKE2b-256 | 189bab3d2a435d39cd1e7244527fd3642c625197da548a3a3ae8123abc7e7483 |
File details
Details for the file aiohttp-0.21.5-cp35-cp35m-win_amd64.whl
.
File metadata
- Download URL: aiohttp-0.21.5-cp35-cp35m-win_amd64.whl
- Upload date:
- Size: 243.8 kB
- Tags: CPython 3.5m, Windows x86-64
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fab71a681ef8233369ced34d0ff4fd86ef70a82cdf1cb5d948f208b3cc35b503 |
|
MD5 | ea5ad57e10bbff3c87e2dae6d6792c7c |
|
BLAKE2b-256 | 490cee9136ef577c6e98b6d919785e88318067852ef0c74dc6db9a6722d92830 |
File details
Details for the file aiohttp-0.21.5-cp35-cp35m-win32.whl
.
File metadata
- Download URL: aiohttp-0.21.5-cp35-cp35m-win32.whl
- Upload date:
- Size: 235.4 kB
- Tags: CPython 3.5m, Windows x86
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7650fad64e61e2ae42a02cf4568341b336a032cb86beea780df6fb2be4a8361e |
|
MD5 | 98a3635266a4b0c5596c3ddc3a348cdc |
|
BLAKE2b-256 | e7a1db9c81d58480bbac6cd264724dc745f1d5a5f181705c7802b2d33fce3599 |
File details
Details for the file aiohttp-0.21.5-cp34-cp34m-win_amd64.whl
.
File metadata
- Download URL: aiohttp-0.21.5-cp34-cp34m-win_amd64.whl
- Upload date:
- Size: 241.3 kB
- Tags: CPython 3.4m, Windows x86-64
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f29a813b286ef50f2a2634bb53b18fb54683b9a6a8c8bb8d39116759d8c5e0a9 |
|
MD5 | 40344451cbdead29cf17a86e41875280 |
|
BLAKE2b-256 | a9b43c1f84829ddc79aa5cca8979306ac8ae380f16e6bf31df4452bdf3c76037 |
File details
Details for the file aiohttp-0.21.5-cp34-cp34m-win32.whl
.
File metadata
- Download URL: aiohttp-0.21.5-cp34-cp34m-win32.whl
- Upload date:
- Size: 235.3 kB
- Tags: CPython 3.4m, Windows x86
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 885c9c6990a8db68f623d77c002051fe2ae688e19d5d9fa4a7deca0421e7dfcc |
|
MD5 | c87e7db7dbd7353750733e30885b9412 |
|
BLAKE2b-256 | 2106721aa7e0c9de0da9a6d0c45157041a652db1274e17b25f0a124b0c517160 |