|
Metadata-Version: 2.1
|
|
Name: aiohttp
|
|
Version: 3.4.4
|
|
Summary: Async http client/server framework (asyncio)
|
|
Home-page: https://github.com/aio-libs/aiohttp
|
|
Author: Nikolay Kim
|
|
Author-email: fafhrd91@gmail.com
|
|
Maintainer: Nikolay Kim <fafhrd91@gmail.com>, Andrew Svetlov <andrew.svetlov@gmail.com>
|
|
Maintainer-email: aio-libs@googlegroups.com
|
|
License: Apache 2
|
|
Project-URL: Chat: Gitter, https://gitter.im/aio-libs/Lobby
|
|
Project-URL: CI: AppVeyor, https://ci.appveyor.com/project/aio-libs/aiohttp
|
|
Project-URL: CI: Circle, https://circleci.com/gh/aio-libs/aiohttp
|
|
Project-URL: CI: Shippable, https://app.shippable.com/github/aio-libs/aiohttp
|
|
Project-URL: CI: Travis, https://travis-ci.com/aio-libs/aiohttp
|
|
Project-URL: Coverage: codecov, https://codecov.io/github/aio-libs/aiohttp
|
|
Project-URL: Docs: RTD, https://docs.aiohttp.org
|
|
Project-URL: GitHub: issues, https://github.com/aio-libs/aiohttp/issues
|
|
Project-URL: GitHub: repo, https://github.com/aio-libs/aiohttp
|
|
Platform: UNKNOWN
|
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
Classifier: Intended Audience :: Developers
|
|
Classifier: Programming Language :: Python
|
|
Classifier: Programming Language :: Python :: 3
|
|
Classifier: Programming Language :: Python :: 3.5
|
|
Classifier: Programming Language :: Python :: 3.6
|
|
Classifier: Programming Language :: Python :: 3.7
|
|
Classifier: Development Status :: 5 - Production/Stable
|
|
Classifier: Operating System :: POSIX
|
|
Classifier: Operating System :: MacOS :: MacOS X
|
|
Classifier: Operating System :: Microsoft :: Windows
|
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
Classifier: Framework :: AsyncIO
|
|
Requires-Python: >=3.5.3
|
|
Requires-Dist: attrs (>=17.3.0)
|
|
Requires-Dist: chardet (<4.0,>=2.0)
|
|
Requires-Dist: multidict (<5.0,>=4.0)
|
|
Requires-Dist: async-timeout (<4.0,>=3.0)
|
|
Requires-Dist: yarl (<2.0,>=1.0)
|
|
Requires-Dist: idna-ssl (>=1.0); python_version < "3.7"
|
|
|
|
==================================
|
|
Async http client/server framework
|
|
==================================
|
|
|
|
.. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/_static/aiohttp-icon-128x128.png
|
|
:height: 64px
|
|
:width: 64px
|
|
:alt: aiohttp logo
|
|
|
|
|
|
|
|
|
.. image:: https://travis-ci.com/aio-libs/aiohttp.svg?branch=master
|
|
:target: https://travis-ci.com/aio-libs/aiohttp
|
|
:align: right
|
|
:alt: Travis status for master branch
|
|
|
|
.. image:: https://ci.appveyor.com/api/projects/status/tnddy9k6pphl8w7k/branch/master?svg=true
|
|
:target: https://ci.appveyor.com/project/aio-libs/aiohttp
|
|
:align: right
|
|
:alt: AppVeyor status for master branch
|
|
|
|
.. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
|
|
:target: https://codecov.io/gh/aio-libs/aiohttp
|
|
:alt: codecov.io status for master branch
|
|
|
|
.. image:: https://badge.fury.io/py/aiohttp.svg
|
|
:target: https://pypi.org/project/aiohttp
|
|
:alt: Latest PyPI package version
|
|
|
|
.. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
|
|
:target: http://docs.aiohttp.org/
|
|
:alt: Latest Read The Docs
|
|
|
|
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
|
:target: https://gitter.im/aio-libs/Lobby
|
|
:alt: Chat on Gitter
|
|
|
|
Key Features
|
|
============
|
|
|
|
- Supports both client and server side of HTTP protocol.
|
|
- Supports both client and server Web-Sockets out-of-the-box without the
|
|
Callback Hell.
|
|
- Web-server has middlewares and pluggable routing.
|
|
|
|
|
|
Getting started
|
|
===============
|
|
|
|
Client
|
|
------
|
|
|
|
To retrieve something from the web:
|
|
|
|
.. code-block:: python
|
|
|
|
import aiohttp
|
|
import asyncio
|
|
|
|
async def fetch(session, url):
|
|
async with session.get(url) as response:
|
|
return await response.text()
|
|
|
|
async def main():
|
|
async with aiohttp.ClientSession() as session:
|
|
html = await fetch(session, 'http://python.org')
|
|
print(html)
|
|
|
|
if __name__ == '__main__':
|
|
loop = asyncio.get_event_loop()
|
|
loop.run_until_complete(main())
|
|
|
|
|
|
Server
|
|
------
|
|
|
|
This is simple usage example:
|
|
|
|
.. code-block:: python
|
|
|
|
from aiohttp import web
|
|
|
|
async def handle(request):
|
|
name = request.match_info.get('name', "Anonymous")
|
|
text = "Hello, " + name
|
|
return web.Response(text=text)
|
|
|
|
async def wshandle(request):
|
|
ws = web.WebSocketResponse()
|
|
await ws.prepare(request)
|
|
|
|
async for msg in ws:
|
|
if msg.type == web.WSMsgType.text:
|
|
await ws.send_str("Hello, {}".format(msg.data))
|
|
elif msg.type == web.WSMsgType.binary:
|
|
await ws.send_bytes(msg.data)
|
|
elif msg.type == web.WSMsgType.close:
|
|
break
|
|
|
|
return ws
|
|
|
|
|
|
app = web.Application()
|
|
app.add_routes([web.get('/', handle),
|
|
web.get('/echo', wshandle),
|
|
web.get('/{name}', handle)])
|
|
|
|
web.run_app(app)
|
|
|
|
|
|
Documentation
|
|
=============
|
|
|
|
https://aiohttp.readthedocs.io/
|
|
|
|
|
|
Demos
|
|
=====
|
|
|
|
https://github.com/aio-libs/aiohttp-demos
|
|
|
|
|
|
External links
|
|
==============
|
|
|
|
* `Third party libraries
|
|
<http://aiohttp.readthedocs.io/en/latest/third_party.html>`_
|
|
* `Built with aiohttp
|
|
<http://aiohttp.readthedocs.io/en/latest/built_with.html>`_
|
|
* `Powered by aiohttp
|
|
<http://aiohttp.readthedocs.io/en/latest/powered_by.html>`_
|
|
|
|
Feel free to make a Pull Request for adding your link to these pages!
|
|
|
|
|
|
Communication channels
|
|
======================
|
|
|
|
*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
|
|
|
|
Feel free to post your questions and ideas here.
|
|
|
|
*gitter chat* https://gitter.im/aio-libs/Lobby
|
|
|
|
We support `Stack Overflow
|
|
<https://stackoverflow.com/questions/tagged/aiohttp>`_.
|
|
Please add *aiohttp* tag to your question there.
|
|
|
|
Requirements
|
|
============
|
|
|
|
- Python >= 3.5.3
|
|
- async-timeout_
|
|
- attrs_
|
|
- chardet_
|
|
- multidict_
|
|
- yarl_
|
|
|
|
Optionally you may install the cChardet_ and aiodns_ libraries (highly
|
|
recommended for sake of speed).
|
|
|
|
.. _chardet: https://pypi.python.org/pypi/chardet
|
|
.. _aiodns: https://pypi.python.org/pypi/aiodns
|
|
.. _attrs: https://github.com/python-attrs/attrs
|
|
.. _multidict: https://pypi.python.org/pypi/multidict
|
|
.. _yarl: https://pypi.python.org/pypi/yarl
|
|
.. _async-timeout: https://pypi.python.org/pypi/async_timeout
|
|
.. _cChardet: https://pypi.python.org/pypi/cchardet
|
|
|
|
License
|
|
=======
|
|
|
|
``aiohttp`` is offered under the Apache 2 license.
|
|
|
|
|
|
Keepsafe
|
|
========
|
|
|
|
The aiohttp community would like to thank Keepsafe
|
|
(https://www.getkeepsafe.com) for it's support in the early days of
|
|
the project.
|
|
|
|
|
|
Source code
|
|
===========
|
|
|
|
The latest developer version is available in a github repository:
|
|
https://github.com/aio-libs/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
|
|
|
|
=========
|
|
Changelog
|
|
=========
|
|
|
|
..
|
|
You should *NOT* be adding new change log entries to this file, this
|
|
file is managed by towncrier. You *may* edit previous change logs to
|
|
fix problems like typo corrections or such.
|
|
To add a new change log entry, please see
|
|
https://pip.pypa.io/en/latest/development/#adding-a-news-entry
|
|
we named the news folder "changes".
|
|
|
|
WARNING: Don't drop the next directive!
|
|
|
|
.. towncrier release notes start
|
|
|
|
3.4.4 (2018-09-05)
|
|
==================
|
|
|
|
- Fix installation from sources when compiling toolkit is not available (`#3241 <https://github.com/aio-libs/aiohttp/pull/3241>`_)
|
|
|
|
3.4.3 (2018-09-04)
|
|
==================
|
|
|
|
- Add ``app.pre_frozen`` state to properly handle startup signals in sub-applications. (`#3237 <https://github.com/aio-libs/aiohttp/pull/3237>`_)
|
|
|
|
|
|
3.4.2 (2018-09-01)
|
|
==================
|
|
|
|
- Fix ``iter_chunks`` type annotation (`#3230 <https://github.com/aio-libs/aiohttp/pull/3230>`_)
|
|
|
|
3.4.1 (2018-08-28)
|
|
==================
|
|
|
|
- Fix empty header parsing regression. (`#3218 <https://github.com/aio-libs/aiohttp/pull/3218>`_)
|
|
- Fix BaseRequest.raw_headers doc. (`#3215 <https://github.com/aio-libs/aiohttp/pull/3215>`_)
|
|
- Fix documentation building on ReadTheDocs (`#3221 <https://github.com/aio-libs/aiohttp/pull/3221>`_)
|
|
|
|
|
|
3.4.0 (2018-08-25)
|
|
==================
|
|
|
|
Features
|
|
--------
|
|
|
|
- Add type hints (`#3049 <https://github.com/aio-libs/aiohttp/pull/3049>`_)
|
|
- Add ``raise_for_status`` request parameter (`#3073 <https://github.com/aio-libs/aiohttp/pull/3073>`_)
|
|
- Add type hints to HTTP client (`#3092 <https://github.com/aio-libs/aiohttp/pull/3092>`_)
|
|
- Minor server optimizations (`#3095 <https://github.com/aio-libs/aiohttp/pull/3095>`_)
|
|
- Preserve the cause when `HTTPException` is raised from another exception. (`#3096 <https://github.com/aio-libs/aiohttp/pull/3096>`_)
|
|
- Add `close_boundary` option in `MultipartWriter.write` method. Support streaming (`#3104 <https://github.com/aio-libs/aiohttp/pull/3104>`_)
|
|
- Added a ``remove_slash`` option to the ``normalize_path_middleware`` factory. (`#3173 <https://github.com/aio-libs/aiohttp/pull/3173>`_)
|
|
- The class `AbstractRouteDef` is importable from `aiohttp.web`. (`#3183 <https://github.com/aio-libs/aiohttp/pull/3183>`_)
|
|
|
|
|
|
Bugfixes
|
|
--------
|
|
|
|
- Prevent double closing when client connection is released before the
|
|
last ``data_received()`` callback. (`#3031 <https://github.com/aio-libs/aiohttp/pull/3031>`_)
|
|
- Make redirect with `normalize_path_middleware` work when using url encoded paths. (`#3051 <https://github.com/aio-libs/aiohttp/pull/3051>`_)
|
|
- Postpone web task creation to connection establishment. (`#3052 <https://github.com/aio-libs/aiohttp/pull/3052>`_)
|
|
- Fix ``sock_read`` timeout. (`#3053 <https://github.com/aio-libs/aiohttp/pull/3053>`_)
|
|
- When using a server-request body as the `data=` argument of a client request, iterate over the content with `readany` instead of `readline` to avoid `Line too long` errors. (`#3054 <https://github.com/aio-libs/aiohttp/pull/3054>`_)
|
|
- fix `UrlDispatcher` has no attribute `add_options`, add `web.options` (`#3062 <https://github.com/aio-libs/aiohttp/pull/3062>`_)
|
|
- correct filename in content-disposition with multipart body (`#3064 <https://github.com/aio-libs/aiohttp/pull/3064>`_)
|
|
- Many HTTP proxies has buggy keepalive support.
|
|
Let's not reuse connection but close it after processing every response. (`#3070 <https://github.com/aio-libs/aiohttp/pull/3070>`_)
|
|
- raise 413 "Payload Too Large" rather than raising ValueError in request.post()
|
|
Add helpful debug message to 413 responses (`#3087 <https://github.com/aio-libs/aiohttp/pull/3087>`_)
|
|
- Fix `StreamResponse` equality, now that they are `MutableMapping` objects. (`#3100 <https://github.com/aio-libs/aiohttp/pull/3100>`_)
|
|
- Fix server request objects comparison (`#3116 <https://github.com/aio-libs/aiohttp/pull/3116>`_)
|
|
- Do not hang on `206 Partial Content` response with `Content-Encoding: gzip` (`#3123 <https://github.com/aio-libs/aiohttp/pull/3123>`_)
|
|
- Fix timeout precondition checkers (`#3145 <https://github.com/aio-libs/aiohttp/pull/3145>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Add a new FAQ entry that clarifies that you should not reuse response
|
|
objects in middleware functions. (`#3020 <https://github.com/aio-libs/aiohttp/pull/3020>`_)
|
|
- Add FAQ section "Why is creating a ClientSession outside of an event loop dangerous?" (`#3072 <https://github.com/aio-libs/aiohttp/pull/3072>`_)
|
|
- Fix link to Rambler (`#3115 <https://github.com/aio-libs/aiohttp/pull/3115>`_)
|
|
- Fix TCPSite documentation on the Server Reference page. (`#3146 <https://github.com/aio-libs/aiohttp/pull/3146>`_)
|
|
- Fix documentation build configuration file for Windows. (`#3147 <https://github.com/aio-libs/aiohttp/pull/3147>`_)
|
|
- Remove no longer existing lingering_timeout parameter of Application.make_handler from documentation. (`#3151 <https://github.com/aio-libs/aiohttp/pull/3151>`_)
|
|
- Mention that ``app.make_handler`` is deprecated, recommend to use runners
|
|
API instead. (`#3157 <https://github.com/aio-libs/aiohttp/pull/3157>`_)
|
|
|
|
|
|
Deprecations and Removals
|
|
-------------------------
|
|
|
|
- Drop ``loop.current_task()`` from ``helpers.current_task()`` (`#2826 <https://github.com/aio-libs/aiohttp/pull/2826>`_)
|
|
- Drop ``reader`` parameter from ``request.multipart()``. (`#3090 <https://github.com/aio-libs/aiohttp/pull/3090>`_)
|
|
|