跳转到主要内容

RFC 6555中描述的Happy Eyeballs算法的Python实现。

项目描述

Python中的Happy Eyeballs(RFC 6555)

https://github.com/sethmlarson/rfc6555/actions/workflows/ci.yml/badge.svg https://codecov.io/gh/sethmlarson/rfc6555/branch/master/graph/badge.svg?token=Xn7oQWErjc https://img.shields.io/pypi/v/rfc6555.svg?style=flat-square

同步Python实现RFC 6555中描述的Happy Eyeballs算法。提供了一个文件和简单的API,以便轻松集成到其他项目中。

摘要

当一个服务器的IPv4路径和协议正常工作,但服务器的IPv6路径和协议不正常工作时,与仅使用IPv4的客户端相比,双栈客户端应用程序将经历显著的连接延迟。这是不可取的,因为它会导致双栈客户端的用户体验变差。本文件规定了减少这种用户可见延迟的算法要求,并提供了算法。

安装

$ python -m pip install rfc6555

使用

rfc6555模块的主要API是通过rfc6555.create_connection()实现的,其功能与socket.create_connection()相同,参数也相同。如果RFC 6555不受支持(例如在无法使用IPv6的平台)或者通过设置rfc6555.RFC6555_ENABLEDFalse来禁用RFC 6555,该函数将自动回退到调用socket.create_connection()

重要:默认情况下,缓存不是线程安全的。如果您需要线程安全的缓存,应该创建自己的rfc6555._RFC6555CacheManager对象实现,并分配给rfc6555.cache

import rfc6555
sock = rfc6555.create_connection(('www.google.com', 80), timeout=10, source_address=('::1', 0))

# This will disable the Happy Eyeballs algorithm for future
# calls to create_connection()
rfc6555.RFC6555_ENABLED = False

# Use this to set a different duration for cache entries.
rfc6555.cache.validity_duration = 10  # 10 second validity time.

# Use this to disable caching.
rfc6555.cache.enabled = False

支持

此模块支持Python 2.7或更高版本,并支持所有主要平台。此外,如果您已安装selectors2>=2.0.0,此模块还将支持Jython,除了CPython。

许可证

rfc6555软件包是在Apache-2.0许可证下发布的。

有关更多信息,请参阅LICENSE文件中的完整许可证文本

变更日志

0.1.0

  • 对于Python 3.5及以上版本,使用selectors代替selectors2

  • 弃用了对Python 2.6、3.3和3.4的支持。

项目详情


下载文件

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

源代码分发

rfc6555-0.1.0.tar.gz (10.1 kB 查看哈希)

上传时间 源代码

构建分发

rfc6555-0.1.0-py2.py3-none-any.whl (10.0 kB 查看哈希)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面