.. image:: https://github.com/agronholm/anyio/actions/workflows/test.yml/badge.svg :target: https://github.com/agronholm/anyio/actions/workflows/test.yml :alt: 构建状态 .. image:: https://coveralls.io/repos/github/agronholm/anyio/badge.svg?branch=master :target: https://coveralls.io/github/agronholm/anyio?branch=master :alt: 代码覆盖率 .. image:: https://readthedocs.org/projects/anyio/badge/?version=latest :target: https://anyio.readthedocs.io/en/latest/?badge=latest :alt: 文档 .. image:: https://badges.gitter.im/gitterHQ/gitter.svg :target: https://gitter.im/python-trio/AnyIO :alt: Gitter聊天
AnyIO是一个异步网络和并发库,可以在asyncio_或trio_之上运行。它在asyncio之上实现了类似trio的"结构化并发"(SC),并与trio本身的原生SC协调工作。
使用AnyIO API编写的应用程序和库可以在asyncio_或trio_上无需修改即可运行。AnyIO也可以逐步引入到库或应用程序中 - 无需全面重构,可以一点一点地采用。它将与您选择的后端的原生库完美融合。
文档
查看完整文档:https://anyio.readthedocs.io/
特性
AnyIO提供以下功能:
-
任务组(在trio术语中称为nurseries_)
-
高级网络(TCP、UDP和UNIX套接字)
- TCP连接的"快乐眼球"算法(比Python 3.8上的asyncio更强大)
- 异步/等待风格的UDP套接字(不像asyncio中仍然需要使用传输和协议)
-
用于字节流和对象流的多功能API
-
任务间同步和通信(锁、条件、事件、信号量、对象流)
-
工作线程
-
子进程
-
异步文件I/O(使用工作线程)
-
信号处理
AnyIO还附带自己的pytest_插件,该插件还支持异步固件。它甚至可以与流行的Hypothesis_库一起使用。
.. _asyncio: https://docs.python.org/3/library/asyncio.html .. _trio: https://github.com/python-trio/trio .. _structured concurrency: https://en.wikipedia.org/wiki/Structured_concurrency .. _nurseries: https://trio.readthedocs.io/en/stable/reference-core.html#nurseries-and-spawning .. _Happy eyeballs: https://en.wikipedia.org/wiki/Happy_Eyeballs .. _pytest: https://docs.pytest.org/en/latest/ .. _Hypothesis: https://hypothesis.works/