跳转到主要内容

QUIC 和 HTTP/3 的实现

项目描述

License Version Python versions Tests Coverage Documentation

什么是 aioquic

aioquic 是一个用于 Python 的 QUIC 网络协议库。它具有最小的 TLS 1.3 实现、QUIC 栈和 HTTP/3 栈。

aioquic 被用于像 dnspythonhypercornmitmproxyWeb Platform Tests 跨浏览器测试套件等 Python 开源项目中。它也在关于 QUIC 的研究论文中得到广泛使用。

要了解更多关于 aioquic 的信息,请 阅读文档

为什么我应该使用 aioquic

aioquic 被设计成嵌入到希望支持 QUIC 和/或 HTTP/3 的 Python 客户端和服务器库中。目标是提供一个共同的基础代码库,以避免重复劳动。

QUIC和HTTP/3 API都遵循“自己带来I/O”的模式,将实际的I/O操作留给API用户。这种方法具有许多优点,包括使代码可测试,并允许与不同的并发模型集成。

为了确保最佳代码质量,已经投入大量精力编写了一个广泛的aioquic代码测试套件,并且它定期与其他QUIC实现进行互操作性测试

特性

  • 遵循RFC 8446的最低TLS 1.3实现

  • 遵循RFC 9000(QUIC v1)和RFC 9369(QUIC v2)的QUIC堆栈
    • 支持IPv4和IPv6

    • 连接迁移和NAT重绑定

    • 记录TLS流量机密

    • 以QLOG格式记录QUIC事件

    • 遵循RFC 9368的版本协商

  • 遵循RFC 9114的HTTP/3堆栈
    • 支持服务器推送

    • 遵循RFC 9220的WebSocket引导

    • 遵循RFC 9297的数据报支持

安装

安装aioquic最简单的方法是运行

pip install aioquic

从源码构建

如果没有为你系统提供的轮子,或者如果你希望从源码构建aioquic,你将需要OpenSSL开发头文件。

Linux

在Debian/Ubuntu上运行

sudo apt install libssl-dev python3-dev

在Alpine Linux上运行

sudo apk add openssl-dev python3-dev bsd-compat-headers libffi-dev

OS X

在OS X上运行

brew install openssl

您需要设置一些环境变量以链接到OpenSSL

export CFLAGS=-I$(brew --prefix openssl)/include
export LDFLAGS=-L$(brew --prefix openssl)/lib

Windows

在Windows上,安装OpenSSL最简单的方法是使用Chocolatey

choco install openssl

您需要设置一些环境变量以链接到OpenSSL

$Env:INCLUDE = "C:\Progra~1\OpenSSL\include"
$Env:LIB = "C:\Progra~1\OpenSSL\lib"

运行示例

aioquic附带了一些示例,展示了各种QUIC用例。

您可以在以下位置浏览这些示例:https://github.com/aiortc/aioquic/tree/main/examples

许可证

BSD许可下发布aioquic

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源分布

aioquic-1.2.0.tar.gz (179.9 KB 查看哈希值

上传于 来源

构建的发行版

aioquic-1.2.0-pp310-pypy310_pp73-win_amd64.whl (1.5 MB 查看哈希值)

上传于 PyPy Windows x86-64

aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686

aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

aioquic-1.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

aioquic-1.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (1.8 MB 查看哈希值)

上传于 PyPy macOS 10.15+ x86-64

aioquic-1.2.0-pp39-pypy39_pp73-win_amd64.whl (1.5 MB 查看哈希值)

上传于 PyPy Windows x86-64

aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686

aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

aioquic-1.2.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传时间 PyPy macOS 11.0+ ARM64

aioquic-1.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (1.8 MB 查看哈希值)

上传时间 PyPy macOS 10.15+ x86-64

aioquic-1.2.0-pp38-pypy38_pp73-win_amd64.whl (1.5 MB 查看哈希值)

上传时间 PyPy Windows x86-64

aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686

aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

aioquic-1.2.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传时间 PyPy macOS 11.0+ ARM64

aioquic-1.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (1.8 MB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

aioquic-1.2.0-cp38-abi3-win_amd64.whl (1.5 MB 查看哈希值)

上传时间 CPython 3.8+ Windows x86-64

aioquic-1.2.0-cp38-abi3-win32.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.8+ Windows x86

aioquic-1.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB 查看哈希值)

上传时间 CPython 3.8+ manylinux: glibc 2.17+ x86-64

aioquic-1.2.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB 查看哈希值)

上传时间 CPython 3.8+ manylinux: glibc 2.17+ i686

aioquic-1.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.8+ manylinux: glibc 2.17+ ARM64

aioquic-1.2.0-cp38-abi3-macosx_11_0_arm64.whl (2.1 MB 查看哈希值)

上传时间 CPython 3.8+ macOS 11.0+ ARM64

aioquic-1.2.0-cp38-abi3-macosx_10_9_x86_64.whl (1.8 MB 查看哈希值)

上传时间 CPython 3.8+ macOS 10.9+ x86-64

由以下支持