ITADN
aio-libs/aiohttp
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

异步 HTTP 客户端/服务器框架

.. 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://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/endpoint?url=https://codspeed.io/badge.json :target: https://codspeed.io/aio-libs/aiohttp :alt: Codspeed.io status for aiohttp

主要特性

  • 支持 HTTP 协议的客户端和服务器端。
  • 开箱即用地支持客户端和服务器端 Web-Sockets,并避免了 回调地狱。
  • 提供带有中间件和可插拔路由的 Web 服务器。

快速入门

客户端

要从网络获取内容:

.. code-block:: python

import aiohttp import asyncio

async def main():

  async with aiohttp.ClientSession() as session:
      async with session.get('https://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())

输出如下:

.. code-block::

Status: 200
Content-type: text/html; charset=utf-8
Body: <!doctype html> ...

来自 requests <https://requests.readthedocs.io/>_ ?阅读 why we need so many lines <https://aiohttp.readthedocs.io/en/latest/http_request_lifecycle.html>_。

服务器

一个使用简单服务器的示例:

.. 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)

文档

https://aiohttp.readthedocs.io/

演示

https://github.com/aio-libs/aiohttp-demos

外部链接

  • 第三方库 <https://aiohttp.readthedocs.io/en/latest/third_party.html>_
  • 使用 aiohttp 构建 <https://aiohttp.readthedocs.io/en/latest/built_with.html>_
  • 由 aiohttp 提供支持 <https://aiohttp.readthedocs.io/en/latest/powered_by.html>_

欢迎提交 Pull Request,将您的链接添加到这些页面!

沟通渠道

aio-libs 讨论区https://github.com/aio-libs/aiohttp/discussions

Matrix#aio-libs:matrix.org <https://matrix.to/#/#aio-libs:matrix.org>_

我们支持 Stack Overflow <https://stackoverflow.com/questions/tagged/aiohttp>_。 请在该处的问题中添加 aiohttp 标签。

依赖项

  • multidict_
  • yarl_
  • frozenlist_

可选地,您可以安装 aiodns_ 库(为了速度,强烈建议安装)。

.. _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

致谢

aiohttp 社区感谢 Keepsafe (https://www.getkeepsafe.com) 在项目初期给予的支持。

源代码

最新的开发版本可在 GitHub 仓库中获取: https://github.com/aio-libs/aiohttp

基准测试

如果您对效率感兴趣,AsyncIO 社区在官方 wiki 上维护了一份 基准测试列表: https://github.com/python/asyncio/wiki/Benchmarks


.. 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 房间 — #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 空间 — #aio-libs-space:matrix.org

.. image:: https://insights.linuxfoundation.org/api/badge/health-score?project=aiohttp :target: https://insights.linuxfoundation.org/project/aiohttp :alt: LFX 健康分数