quic的实现

aioquic的Python项目详细描述


rtdpypi-vpypi-pyversionspypi-ltraviscodecovblack

什么是aioquic

aioquic是python中quic网络协议的库。它的特点 最小的tls 1.3实现、quic堆栈和http/3堆栈。

QUIC标准化尚未最终确定,但aioquic密切跟踪 规范草案,并定期测试与其他规范的互操作性 QUIC implementations

要了解有关aioquic的更多信息,请read the documentation

为什么要使用aioquic

aioquic被设计为嵌入到python客户机和服务器中 希望支持quic和/或http/3的库。目标是提供 python库的公共代码库,希望避免重复工作。

quic和http/3api都遵循“自带i/o”模式, 将实际的I/O操作留给API用户。这种方法有很多 优点包括使代码可测试并允许与 不同的并发模型。

功能

  • 符合草案-22的QUIC堆栈
  • 符合draft-22的http/3堆栈
  • 最小TLS 1.3实现
  • IPv4和IPv6支持
  • 连接迁移和NAT重新绑定
  • 记录TLS交通机密
  • 以qlog格式记录quic事件

运行示例

aioquic需要python 3.6或更高版本以及openssl开发头文件。

$ sudo apt install libssl-dev python3-dev

使用git签出代码后,您可以运行:

$ pip install -e .
$ pip install aiofiles asgiref httpbin starlette wsproto

http/3服务器

您可以运行示例服务器,它同时处理http/0.9和http/3:

$ python examples/http3_server.py --certificate tests/ssl_cert.pem --private-key tests/ssl_key.pem

http/3客户端

您可以运行示例客户机来执行http/3请求:

$ python examples/http3_client.py https://localhost:4433/

或者,您可以执行http/0.9请求:

$ python examples/http3_client.py --legacy-http https://localhost:4433/

您还可以通过http/3打开websocket:

$ python examples/http3_client.py wss://localhost:4433/ws

许可证

aioquicBSD license下释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Frida Java windows的逆向工程   Java术语中的对象初始化   java在何处放置maven参数化junit输入xml文件   java如何在Swift中创建以日期为键、布尔值为值的字典/地图?   java Velocity动态属性访问   java Maven站点我如何找到它们?   java JavaFX按钮在显示阶段时显示为选中状态   文件io字符串方法java赋值   java为SOAP头生成证书   java Android更改EditText的setError弹出消息的背景色   java格式存储为字符串的数字   java Testcontainers+dbrider:无法清除表X,消息:启用自动提交时无法提交。,原因:无效   java程序应该可以运行,但仍然没有输出?   Java在列表末尾添加一个节点?   java类对象中的默认构造函数做什么?   java如何更快地从映射返回键和值?