aiohttp
Asynchronous HTTP client/server framework for asyncio and Python
Science Score: 36.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
3 of 773 committers (0.4%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.3%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Asynchronous HTTP client/server framework for asyncio and Python
Basic Info
- Host: GitHub
- Owner: aio-libs
- License: other
- Language: Python
- Default Branch: master
- Homepage: https://docs.aiohttp.org
- Size: 34 MB
Statistics
- Stars: 15,967
- Watchers: 218
- Forks: 2,121
- Open Issues: 269
- Releases: 0
Topics
Metadata Files
README.rst
==================================
Async http client/server framework
==================================
.. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/aiohttp-plain.svg
:height: 64px
:width: 64px
:alt: aiohttp logo
|
.. image:: https://github.com/aio-libs/aiohttp/workflows/CI/badge.svg
:target: https://github.com/aio-libs/aiohttp/actions?query=workflow%3ACI
:alt: GitHub Actions 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://img.shields.io/endpoint?url=https://codspeed.io/badge.json
:target: https://codspeed.io/aio-libs/aiohttp
:alt: Codspeed.io status for aiohttp
.. image:: https://badge.fury.io/py/aiohttp.svg
:target: https://pypi.org/project/aiohttp
:alt: Latest PyPI package version
.. image:: https://img.shields.io/pypi/dm/aiohttp
:target: https://pypistats.org/packages/aiohttp
:alt: Downloads count
.. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
:target: https://docs.aiohttp.org/
:alt: Latest Read The Docs
.. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
:target: https://matrix.to/#/%23aio-libs:matrix.org
:alt: Matrix Room — #aio-libs:matrix.org
.. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
:target: https://matrix.to/#/%23aio-libs-space:matrix.org
:alt: Matrix Space — #aio-libs-space:matrix.org
Key Features
============
- Supports both client and server side of HTTP protocol.
- Supports both client and server Web-Sockets out-of-the-box and avoids
Callback Hell.
- Provides Web-server with middleware and pluggable routing.
Getting started
===============
Client
------
To get something from the web:
.. code-block:: python
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.get('http://python.org') as response:
print("Status:", response.status)
print("Content-type:", response.headers['content-type'])
html = await response.text()
print("Body:", html[:15], "...")
asyncio.run(main())
This prints:
.. code-block::
Status: 200
Content-type: text/html; charset=utf-8
Body: ...
Coming from `requests `_ ? Read `why we need so many lines `_.
Server
------
An example using a simple server:
.. code-block:: python
# examples/server_simple.py
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)])
if __name__ == '__main__':
web.run_app(app)
Documentation
=============
https://aiohttp.readthedocs.io/
Demos
=====
https://github.com/aio-libs/aiohttp-demos
External links
==============
* `Third party libraries
`_
* `Built with aiohttp
`_
* `Powered by aiohttp
`_
Feel free to make a Pull Request for adding your link to these pages!
Communication channels
======================
*aio-libs Discussions*: https://github.com/aio-libs/aiohttp/discussions
*Matrix*: `#aio-libs:matrix.org `_
We support `Stack Overflow
`_.
Please add *aiohttp* tag to your question there.
Requirements
============
- multidict_
- yarl_
- frozenlist_
Optionally you may install the aiodns_ library (highly recommended for sake of speed).
.. _aiodns: https://pypi.python.org/pypi/aiodns
.. _multidict: https://pypi.python.org/pypi/multidict
.. _frozenlist: https://pypi.org/project/frozenlist/
.. _yarl: https://pypi.python.org/pypi/yarl
License
=======
``aiohttp`` is offered under the Apache 2 license.
Keepsafe
========
The aiohttp community would like to thank Keepsafe
(https://www.getkeepsafe.com) for its 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 efficiency, the AsyncIO community maintains a
list of benchmarks on the official wiki:
https://github.com/python/asyncio/wiki/Benchmarks
Owner
- Name: aio-libs
- Login: aio-libs
- Kind: organization
- Website: https://github.com/aio-libs/.github/discussions
- Repositories: 72
- Profile: https://github.com/aio-libs
The set of asyncio-based libraries built with high quality
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Andrew Svetlov | a****v@g****m | 3,831 |
| dependabot[bot] | 4****] | 1,580 |
| patchback[bot] | 4****] | 907 |
| J. Nick Koston | n****k@k****g | 762 |
| Nikolay Kim | f****1@g****m | 600 |
| Sviatoslav Sydorenko | wk@s****a | 491 |
| Sam Bull | g****t@s****g | 460 |
| dependabot-preview[bot] | 2****] | 236 |
| pyup.io bot | g****t@p****o | 206 |
| Nikolay Kim | n****m@a****m | 163 |
| Alexey Popravka | a****a@h****m | 61 |
| Alexander Shorin | k****l@g****m | 60 |
| pre-commit-ci[bot] | 6****] | 47 |
| Jashandeep Sohi | j****i@g****m | 44 |
| Samuel Colvin | s@m****m | 37 |
| aio-libs-github-bot[bot] | 7****] | 33 |
| Anton Kasyanov | a****v@g****m | 31 |
| Pau Freixes | p****s@g****m | 28 |
| Arthur Darcet | a****b@d****r | 28 |
| Nickolai Novik | i****y@y****m | 25 |
| Dmitry Erlikh | d****h@g****m | 25 |
| Vladimir Rutsky | r****y | 23 |
| Olexiy Pohorely | 5****z | 22 |
| Коренберг Марк | s****r@g****m | 22 |
| github-actions[bot] | 4****] | 20 |
| Cycloctane | C****e@o****m | 20 |
| Andrew Leech | a****w@a****t | 19 |
| Marco Paolini | m****o@c****m | 19 |
| Slava | s****g@g****m | 18 |
| Ville Skyttä | v****a@i****i | 17 |
| and 743 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 789
- Total pull requests: 5,998
- Average time to close issues: almost 2 years
- Average time to close pull requests: 18 days
- Total issue authors: 601
- Total pull request authors: 227
- Average comments per issue: 5.59
- Average comments per pull request: 2.17
- Merged pull requests: 5,012
- Bot issues: 12
- Bot pull requests: 3,176
Past Year
- Issues: 219
- Pull requests: 3,827
- Average time to close issues: 12 days
- Average time to close pull requests: 1 day
- Issue authors: 145
- Pull request authors: 75
- Average comments per issue: 2.92
- Average comments per pull request: 2.22
- Merged pull requests: 3,272
- Bot issues: 12
- Bot pull requests: 2,029
Top Authors
Issue Authors
- bdraco (51)
- Dreamsorcerer (31)
- asvetlov (16)
- dmoklaf (11)
- patchback[bot] (6)
- mgorny (6)
- dependabot[bot] (6)
- socketpair (5)
- musicinmybrain (5)
- thehesiod (5)
- steverep (4)
- NewUserHa (4)
- kenballus (4)
- webknjaz (4)
- PLPeeters (3)
Pull Request Authors
- dependabot[bot] (1,867)
- bdraco (1,601)
- patchback[bot] (1,271)
- Dreamsorcerer (546)
- webknjaz (49)
- pre-commit-ci[bot] (38)
- asvetlov (36)
- steverep (35)
- Cycloctane (33)
- cdce8p (19)
- Olegt0rr (13)
- TimMenninger (13)
- PLPeeters (12)
- Vizonex (11)
- arcivanov (10)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 6
-
Total downloads:
- pypi 210,402,919 last-month
- Total docker downloads: 2,314,349,642
-
Total dependent packages: 5,453
(may contain duplicates) -
Total dependent repositories: 67,216
(may contain duplicates) - Total versions: 382
- Total maintainers: 6
- Total advisories: 16
pypi.org: aiohttp
Async http client/server framework (asyncio)
- Homepage: https://github.com/aio-libs/aiohttp
- Documentation: https://aiohttp.readthedocs.io/
- License: Apache-2.0 AND MIT
-
Latest release: 3.12.15
published 7 months ago
Rankings
Maintainers (3)
Advisories (16)
- AIOHTTP has problems in HTTP parser (the python one, not llhttp)
- AIOHTTP is vulnerable to HTTP Request/Response Smuggling through incorrect parsing of chunked trailer sections
- `aiohttp` Open Redirect vulnerability (`normalize_path_middleware` middleware)
- aiohttp Cross-site Scripting vulnerability on index pages for static file handling
- aiohttp allows request smuggling due to incorrect parsing of chunk extensions
- aiohttp has a memory leak when middleware is enabled when requesting a resource with a non-allowed method
- Aiohttp has inconsistent interpretation of `Content-Length` vs. `Transfer-Encoding` differing in C and Python fallbacks
- aiohttp has vulnerable dependency that is vulnerable to request smuggling
- aiohttp vulnerable to Denial of Service when trying to parse malformed POST requests
- aiohttp's HTTP parser (the python one, not llhttp) still overly lenient about separators
- ...and 6 more
spack.io: py-aiohttp
Supports both client and server side of HTTP protocol. Supports both client and server Web-Sockets out-of-the-box and avoids Callbacks. Provides Web-server with middlewares and plugable routing.
- Homepage: https://github.com/aio-libs/aiohttp
- License: []
-
Latest release: 3.9.5
published over 1 year ago
Rankings
Maintainers (1)
conda-forge.org: aiohttp
- Homepage: https://github.com/aio-libs/aiohttp
- License: MIT AND Apache-2.0
-
Latest release: 3.8.3
published over 3 years ago
Rankings
anaconda.org: aiohttp
Async http client/server framework (asyncio)
- Homepage: https://github.com/aio-libs/aiohttp
- License: Apache-2.0 AND MIT
-
Latest release: 3.12.15
published 6 months ago
Rankings
pypi.org: aiohttp-edit
Async http client/server framework (asyncio)
- Homepage: https://github.com/aio-libs/aiohttp
- Documentation: https://aiohttp-edit.readthedocs.io/
- License: Apache 2
-
Latest release: 3.7.4.post11
published over 4 years ago
Rankings
Maintainers (1)
pypi.org: aiohttp-nossl
Async http client/server framework (asyncio)
- Homepage: https://github.com/aio-libs/aiohttp
- Documentation: https://aiohttp-nossl.readthedocs.io/
- License: Apache 2
Rankings
Maintainers (1)
Dependencies
- cherry_picker ==2.1.0 development
- pip-tools ==6.5.0 development
- Brotli ==1.0.9 test
- coverage ==6.4.2 test
- cryptography ==36.0.1 test
- freezegun ==1.1.0 test
- mypy ==0.931 test
- mypy-extensions ==0.4.3 test
- proxy.py * test
- pytest ==7.1.2 test
- pytest-cov ==3.0.0 test
- pytest-mock ==3.6.1 test
- python-on-whales ==0.36.1 test
- re-assert ==1.1.0 test
- setuptools-git ==1.2 test
- trustme ==0.9.0 test
- wait-for-it ==2.2.1 test
- dependabot/fetch-metadata v1 composite
- actions/cache v3.0.4 composite
- actions/checkout v4 composite
- actions/download-artifact v3 composite
- actions/setup-node v3 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3 composite
- aio-libs/create-release v1.6.6 composite
- codecov/codecov-action v3 composite
- docker/setup-qemu-action v3 composite
- pypa/cibuildwheel v2.16.2 composite
- pypa/gh-action-pypi-publish release/v1 composite
- re-actors/alls-green release/v1 composite
- sigstore/gh-action-sigstore-python v2.1.0 composite
- softprops/action-gh-release v1 composite
- actions/checkout v4 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- actions/checkout v4 composite
- actions/setup-python v4 composite
- peter-evans/create-pull-request v5 composite
- tibdex/github-app-token v2.1 composite
- python $PYTHON_VERSION build
- gunicorn *
- uvloop *
- aiodns ==3.1.0
- aiosignal ==1.3.1
- async-timeout ==4.0.3
- brotli ==1.1.0
- cffi ==1.15.1
- frozenlist ==1.4.0
- gunicorn ==21.2.0
- idna ==3.4
- multidict ==6.0.4
- packaging ==23.1
- pycares ==4.3.0
- pycparser ==2.21
- typing-extensions ==4.7.1
- uvloop ==0.17.0
- yarl ==1.9.2
- aiodns ==3.1.0
- aiohttp-theme ==0.1.6
- aioredis ==2.0.1
- aiosignal ==1.3.1
- alabaster ==0.7.13
- async-timeout ==4.0.3
- babel ==2.12.1
- blockdiag ==3.0.0
- brotli ==1.1.0
- build ==0.10.0
- certifi ==2023.7.22
- cffi ==1.15.1
- cfgv ==3.3.1
- charset-normalizer ==3.2.0
- cherry-picker ==2.1.0
- click ==8.1.6
- click-default-group ==1.2.2
- coverage ==7.3.2
- cryptography ==41.0.3
- cython ==3.0.3
- distlib ==0.3.7
- docutils ==0.20.1
- exceptiongroup ==1.1.2
- filelock ==3.12.2
- freezegun ==1.2.2
- frozenlist ==1.4.0
- funcparserlib ==1.0.1
- gidgethub ==5.3.0
- gunicorn ==21.2.0
- identify ==2.5.26
- idna ==3.4
- imagesize ==1.4.1
- incremental ==22.10.0
- iniconfig ==2.0.0
- jinja2 ==3.1.2
- markupsafe ==2.1.3
- multidict ==6.0.4
- mypy ==1.6.0
- mypy-extensions ==1.0.0
- nodeenv ==1.8.0
- packaging ==23.1
- pillow ==9.5.0
- pip ==23.2.1
- pip-tools ==7.3.0
- platformdirs ==3.10.0
- pluggy ==1.2.0
- pre-commit ==3.4.0
- proxy-py ==2.4.3
- pycares ==4.3.0
- pycparser ==2.21
- pydantic ==1.10.12
- pyenchant ==3.2.2
- pygments ==2.15.1
- pyjwt ==2.8.0
- pyproject-hooks ==1.0.0
- pytest ==7.4.2
- pytest-cov ==4.1.0
- pytest-mock ==3.11.1
- python-dateutil ==2.8.2
- python-on-whales ==0.65.0
- pyyaml ==6.0.1
- re-assert ==1.1.0
- regex ==2023.6.3
- requests ==2.31.0
- setuptools ==68.0.0
- setuptools-git ==1.2
- six ==1.16.0
- slotscheck ==0.17.0
- snowballstemmer ==2.2.0
- sphinx ==7.1.2
- sphinxcontrib-applehelp ==1.0.4
- sphinxcontrib-blockdiag ==3.0.0
- sphinxcontrib-devhelp ==1.0.2
- sphinxcontrib-htmlhelp ==2.0.1
- sphinxcontrib-jsmath ==1.0.1
- sphinxcontrib-qthelp ==1.0.3
- sphinxcontrib-serializinghtml ==1.1.5
- sphinxcontrib-spelling ==8.0.0
- sphinxcontrib-towncrier ==0.3.2a0
- toml ==0.10.2
- tomli ==2.0.1
- towncrier ==23.6.0
- tqdm ==4.65.0
- trustme ==1.1.0
- typer ==0.9.0
- typing-extensions ==4.7.1
- uritemplate ==4.1.1
- urllib3 ==2.0.4
- uvloop ==0.17.0
- virtualenv ==20.24.2
- wait-for-it ==2.2.2
- webcolors ==1.13
- wheel ==0.41.0
- yarl ==1.9.2
- Cython *
- cython ==3.0.3
- multidict ==6.0.4
- typing-extensions ==4.7.1
- cherry_picker * development
- pip-tools * development
- sphinxcontrib-spelling *
- aiohttp-theme ==0.1.6
- alabaster ==0.7.13
- babel ==2.12.1
- blockdiag ==3.0.0
- certifi ==2023.7.22
- charset-normalizer ==3.3.0
- click ==8.1.6
- click-default-group ==1.2.2
- docutils ==0.20.1
- funcparserlib ==1.0.1
- idna ==3.4
- imagesize ==1.4.1
- incremental ==22.10.0
- jinja2 ==3.1.2
- markupsafe ==2.1.3
- packaging ==23.1
- pillow ==9.5.0
- pyenchant ==3.2.2
- pygments ==2.15.1
- requests ==2.31.0
- setuptools ==68.0.0
- snowballstemmer ==2.2.0
- sphinx ==7.1.2
- sphinxcontrib-applehelp ==1.0.4
- sphinxcontrib-blockdiag ==3.0.0
- sphinxcontrib-devhelp ==1.0.2
- sphinxcontrib-htmlhelp ==2.0.1
- sphinxcontrib-jsmath ==1.0.1
- sphinxcontrib-qthelp ==1.0.3
- sphinxcontrib-serializinghtml ==1.1.5
- sphinxcontrib-spelling ==8.0.0
- sphinxcontrib-towncrier ==0.3.2a0
- towncrier ==23.6.0
- urllib3 ==2.0.6
- webcolors ==1.13
- aiohttp-theme *
- sphinx *
- sphinxcontrib-blockdiag *
- sphinxcontrib-towncrier *
- towncrier *
- aiohttp-theme ==0.1.6
- alabaster ==0.7.13
- babel ==2.12.1
- blockdiag ==3.0.0
- certifi ==2023.7.22
- charset-normalizer ==3.3.0
- click ==8.1.6
- click-default-group ==1.2.2
- docutils ==0.20.1
- funcparserlib ==1.0.1
- idna ==3.4
- imagesize ==1.4.1
- incremental ==22.10.0
- jinja2 ==3.1.2
- markupsafe ==2.1.3
- packaging ==23.1
- pillow ==9.5.0
- pygments ==2.15.1
- requests ==2.31.0
- setuptools ==68.0.0
- snowballstemmer ==2.2.0
- sphinx ==7.1.2
- sphinxcontrib-applehelp ==1.0.4
- sphinxcontrib-blockdiag ==3.0.0
- sphinxcontrib-devhelp ==1.0.2
- sphinxcontrib-htmlhelp ==2.0.1
- sphinxcontrib-jsmath ==1.0.1
- sphinxcontrib-qthelp ==1.0.3
- sphinxcontrib-serializinghtml ==1.1.5
- sphinxcontrib-towncrier ==0.3.2a0
- towncrier ==23.6.0
- urllib3 ==2.0.6
- webcolors ==1.13
- aioredis *
- mypy *
- pre-commit *
- pytest *
- slotscheck *
- uvloop *
- aioredis ==2.0.1
- async-timeout ==4.0.3
- cfgv ==3.3.1
- click ==8.1.6
- distlib ==0.3.7
- exceptiongroup ==1.1.2
- filelock ==3.12.2
- identify ==2.5.26
- iniconfig ==2.0.0
- mypy ==1.6.0
- mypy-extensions ==1.0.0
- nodeenv ==1.8.0
- packaging ==23.1
- platformdirs ==3.10.0
- pluggy ==1.2.0
- pre-commit ==3.4.0
- pytest ==7.4.2
- pyyaml ==6.0.1
- setuptools ==68.0.0
- slotscheck ==0.17.0
- tomli ==2.0.1
- typing-extensions ==4.7.1
- uvloop ==0.17.0
- virtualenv ==20.24.2
- multidict *
- multidict ==6.0.4
- Brotli *
- aiodns >=1.1
- aiosignal >=1.1.2
- async-timeout >=4.0,<5.0
- brotlicffi *
- frozenlist >=1.1.1
- multidict >=4.5,<7.0
- yarl >=1.0,<2.0
- aiodns ==3.1.0
- aiosignal ==1.3.1
- async-timeout ==4.0.3
- brotli ==1.1.0
- cffi ==1.15.1
- frozenlist ==1.4.0
- idna ==3.4
- multidict ==6.0.4
- pycares ==4.3.0
- pycparser ==2.21
- yarl ==1.9.2
- coverage * test
- freezegun * test
- mypy * test
- proxy.py * test
- pytest * test
- pytest-cov * test
- pytest-mock * test
- python-on-whales * test
- re-assert * test
- setuptools-git * test
- trustme * test
- wait-for-it * test
- typing_extensions *
- typing-extensions ==4.7.1