aiohttp
所属分类:Web服务器
开发工具:Python
文件大小:1253KB
下载次数:4
上传日期:2017-02-12 15:58:37
上 传 者:
ddddddddddddddddd
说明: http客户端/asyncio服务器
支持HTTP协议的客户端和服务器端。
支持客户端和服务器Web-Sockets开箱即用。
Web服务器有中间件和可插拔路由
(
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.
)
文件列表:
.coveragerc (93, 2015-11-09)
.travis.yml (847, 2015-11-09)
aiohttp\abc.py (533, 2015-11-09)
aiohttp\client.py (22419, 2015-11-09)
aiohttp\client_reqrep.py (26153, 2015-11-09)
aiohttp\connector.py (24952, 2015-11-09)
aiohttp\errors.py (4632, 2015-11-09)
aiohttp\hdrs.py (3148, 2015-11-09)
aiohttp\helpers.py (15123, 2015-11-09)
aiohttp\log.py (326, 2015-11-09)
aiohttp\multidict.py (10763, 2015-11-09)
aiohttp\multipart.py (28717, 2015-11-09)
aiohttp\parsers.py (14097, 2015-11-09)
aiohttp\protocol.py (27735, 2015-11-09)
aiohttp\server.py (13672, 2015-11-09)
aiohttp\signals.py (1812, 2015-11-09)
aiohttp\streams.py (17164, 2015-11-09)
aiohttp\test_utils.py (9549, 2015-11-09)
aiohttp\web.py (8220, 2015-11-09)
aiohttp\websocket.py (14073, 2015-11-09)
aiohttp\websocket_client.py (5658, 2015-11-09)
aiohttp\web_exceptions.py (6892, 2015-11-09)
aiohttp\web_reqrep.py (26387, 2015-11-09)
aiohttp\web_urldispatcher.py (16721, 2015-11-09)
aiohttp\web_ws.py (10253, 2015-11-09)
aiohttp\worker.py (4174, 2015-11-09)
aiohttp\wsgi.py (6627, 2015-11-09)
aiohttp\_multidict.pyx (18250, 2015-11-09)
aiohttp\_websocket.pyx (606, 2015-11-09)
aiohttp\__init__.py (789, 2015-11-09)
appveyor.yml (808, 2015-11-09)
benchmark\async.py (9310, 2015-11-09)
benchmark\multidict.py (1285, 2015-11-09)
benchmark\requirements.txt (39, 2015-11-09)
CHANGES.txt (1031, 2015-11-09)
CONTRIBUTING.rst (2781, 2015-11-09)
CONTRIBUTORS.txt (1405, 2015-11-09)
docs\aiohttp-icon.ico (3262, 2015-11-09)
docs\aiohttp-icon.svg (50150, 2015-11-09)
... ...
http client/server for asyncio
==============================
.. image:: https://raw.github.com/KeepSafe/aiohttp/master/docs/_static/aiohttp-icon-128x128.png
:height: ***px
:width: ***px
:alt: aiohttp logo
.. image:: https://secure.travis-ci.org/KeepSafe/aiohttp.png
:target: https://secure.travis-ci.org/KeepSafe/aiohttp
:align: right
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.
Requirements
------------
- Python >= 3.4.1
- chardet https://pypi.python.org/pypi/chardet
Optionally you may install cChardet library:
https://pypi.python.org/pypi/cchardet/1.0.0
License
-------
``aiohttp`` is offered under the Apache 2 license.
Documentation
-------------
http://aiohttp.readthedocs.org/
Discussion list
---------------
*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
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
Getting started
---------------
Client
^^^^^^
To retrieve something from the web:
.. code-block:: python
import aiohttp
import asyncio
async def get_body(client, url):
async with client.get(url) as response:
return await response.read()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
client = aiohttp.ClientSession(loop=loop)
raw_html = loop.run_until_complete(get_body(client, 'http://python.org'))
print(raw_html)
client.close()
If you want to use timeouts for aiohttp client please use standard
asyncio approach:
.. code-block:: python
yield from asyncio.wait_for(client.get(url), 10)
Server
^^^^^^
This is simple usage example:
.. code-block:: python
import asyncio
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
async def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/echo', wshandler)
app.router.add_route('GET', '/{name}', handle)
srv = await 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()
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()
近期下载者:
相关文件:
收藏者: