纯Python组播DNS服务发现库(与Bonjour/Avahi兼容)
项目描述
python-zeroconf-py2compat
这是pyzeroconf的一个分支,一个Python的组播DNS服务发现库,最初由Paul Scott-Murphy编写(https://github.com/paulsm/pyzeroconf),随后由William McBrine修改(https://github.com/wmcbrine/pyzeroconf),并在0.19.1标签的基础上进一步修改(最后支持Py2.7)由Jamie Alexandre完成(https://github.com/learningequality/python-zeroconf)。
兼容性
Bonjour
Avahi
与一些其他的Zeroconf/Bonjour/Avahi Python包相比,python-zeroconf
不依赖于Bonjour或Avahi
不使用D-Bus
不强制你使用特定的事件循环或Twisted
可以通过pip安装
Python兼容性
CPython 2.7, 3.3+
PyPy 2.2+(可能也包括1.9-2.1)
PyPy3 2.4+
版本控制
本项目的版本遵循以下模式:MAJOR.MINOR.PATCH。
MAJOR版本目前为0
MINOR版本在向后不兼容的更改时递增
PATCH版本在向后兼容的更改时递增
状态
有一些人正在使用这个包。我并不积极使用它,因此我所能提供的任何关于任何问题的帮助都非常有限。
如何获取python-zeroconf-py2compat?
安装python-zeroconf-py2compat最简单的方法是使用pip
pip install zeroconf-py2compat
如何使用它?
以下是一个查找服务的示例
from six.moves import input
from zeroconf import ServiceBrowser, Zeroconf
class MyListener(object):
def remove_service(self, zeroconf, type, name):
print("Service %s removed" % (name,))
def add_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
print("Service %s added, service info: %s" % (name, info))
zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)
try:
input("Press enter to exit...\n\n")
finally:
zeroconf.close()
如果你不知道需要查找的服务的名称,尝试
from zeroconf import ZeroconfServiceTypes
print('\n'.join(ZeroconfServiceTypes.find()))
更多示例请参阅示例目录。
变更日志
0.19.16
修复阻止TXT记录通过ServiceBrowser更新的问题
0.19.15
跟踪所有请求的广播接口,而不仅仅是成功附加的接口
0.19.14
从get_all_addresses()返回的列表中排除以“169.254”开头的地址
0.19.13
将某些应保留的assert使用转换为python -O时可能持久的存在
将接口附加从Zeroconf.__init__中分离出来,成为一个单独的方法_add_interfaces
添加了删除接口的相应行为,类似于_add_interfaces的功能,但相反
公开了新的公共方法Zeroconf.update_interfaces,它触发接口的添加或删除
阻止因网络不可达而发生的错误报告堆栈跟踪,errno.ENETUNREACH
更新Zeroconf.send以接受一个interface,在它上过滤发送消息的接口,这样在接口被删除时可以尝试发送添加/删除消息
0.19.10
减少(并使配置可用的)_GLOBAL_DONE线程等待时间以改进发现
0.19.9
将_GLOBAL_DONE转换为线程Event,以便在关闭时更好地中断
0.19.8
在接口枚举中处理异常,并仅返回一个空列表
0.19.7
从ifaddr回滚到ifcfg
0.19.6
从ifcfg切换到ifaddr进行地址枚举
0.19.5
通过pyjnius添加对Android的支持
0.19.4
提供enum兼容性
0.19.3
修复setup.py,以便实际上包含zeroconf.py!
0.19.2(learningequality/python-zeroconf-py2compat中的第一个发布版本)
将基于C的netifaces替换为纯Python的ifcfg以提高可移植性
允许DNS A记录地址由出站接口IP确定
当‘stale’时刷新ServiceBrowser条目(从0.20.0回滚)
在新条目中首先添加新记录,而不是最后(从0.20.0回滚)
修复在DNSRecord子类中损坏的__eq__(从0.20.0回滚)
修复已发布服务的TTL处理,并使用RFC6762(从0.21.0回滚)
修复循环后的UnboundLocalError(从0.21.0回滚)
修复UTF-8多字节名称压缩(从0.21.0版本回滚)
修复日志调用(从0.21.0版本回滚)
修复在关闭时未发送服务移除数据包(从0.22.0版本回滚)
MyListener回调在服务TXT记录变更时(从0.23.0版本回滚)
0.19.1
允许使用netifaces >= 0.10.6进行安装(我们关心的一个错误已修复)
0.19.0
技术上不兼容 - 限制netifaces依赖版本以解决错误,请参阅https://github.com/jstasiak/python-zeroconf/issues/84获取详细信息
0.18.0
放弃对Python 2.6的支持
改进关闭Zeroconf对象时执行的代码中的错误处理
0.17.7
更好地处理DNS传入数据包解析异常
许多异常现在将在第一次出现时记录警告
捕获和记录sendto()错误
修复/实现重复名称更改
修复在0.17.6中引入的过度严格的名称验证
极大地改进处理超大数据包,包括
根据RFC1035实现名称压缩
根据RFC6762限制生成的数据包大小为9000字节
更好地处理过大的传入数据包
将测试覆盖率提高到95%
0.17.6
许多改进以解决ZC()启动和关闭期间的竞争条件和异常,归功于:morpav、veawor、justingiorgi、herczy、stephenrauch
添加更多测试覆盖率:strahlex、stephenrauch
Stephen Rauch做出贡献
加速浏览器启动
添加ZeroconfServiceTypes()查询类以发现所有广告服务类型
对服务名称、类型和子类型进行完全验证
修复子类型浏览问题
修复DNSHInfo支持问题
0.17.5
修复了OpenBSD兼容性问题,感谢Alessio Sergi
修复了ServiceBrowser启动时的竞争条件,感谢gbiddison
修复了一些Python 3系统上的安装问题,感谢Per Sandström
修复了Python 3上的“迭代期间大小更改”错误,感谢gbiddison
0.17.4
修复了对Linux内核版本< 3.9的支持,感谢Giovanni Harting和Luckydonald,GitHub拉取请求#26
0.17.3
修复了Python 3上的DNSText表示,感谢Paulus Schoutsen提供的补丁,GitHub拉取请求#24
0.17.2
修复了Python 3.4.3+上的安装问题(由于enum34依赖项无法安装,改为依赖enum-compat;感谢Michael Brennan提供的原始补丁,GitHub拉取请求#22)
0.17.1
修复了在Windows上尝试使用虚拟网络接口时的EADDRNOTAVAIL错误,感谢daid
0.17.0
添加了一些Python依赖项,因此不再为零依赖项
改进异常处理(现在会更安静)
默认情况下,使用所有可用的网络接口监听和发送消息(可配置);感谢Marcus Müller
开始更自由地使用日志记录
修复了二进制字符串作为属性值时转换为False的错误(https://github.com/jstasiak/python-zeroconf/pull/10);感谢Dr. Seuss
添加了新的ServiceBrowser事件处理器接口(请参阅示例)
PyPy3现在正式支持
修复了Python 3上的ServiceInfo表示,感谢Yordan Miladinov
0.16.0
设置Python日志记录并开始使用它
清理了代码样式(包括从驼峰式命名法迁移到蛇形命名法)
0.15.1
修复了处理关闭套接字(GitHub #4)
0.15
由Jakub Stasiak分叉
使Python 3兼容
添加了安装脚本,使其可通过pip安装并上传到PyPI
设置Travis构建
重新格式化代码并移动文件
停止在几个地方捕获BaseException,这可能导致隐藏错误
将线程标记为守护线程,它们现在不会保持应用程序运行
0.14
修复了某些系统上SOL_IP未定义的错误 - 感谢Mike Erdely。
清理了示例。
将模块名称转换为小写。
0.13
各种小改动;请参阅git获取详细信息。
不再与Python 2.2兼容。仅测试过2.5-2.7版本。
由William McBrine分支。
0.12
允许选择绑定接口
错别字修正 - 感谢A. M. Kuchling
删除了所有“Rendezvous”一词的使用 - 这是一个API更改
0.11
对addListener方法的注释进行了修正
支持从OS X看到的新的记录类型 - IPv6地址 - hostinfo
忽略未知DNS记录类型
对名称解码进行了修复
与其他使用端口5353(例如,在Mac OS X上)的进程协同工作
与Mac OS X 10.3.2的mDNSResponder进行了测试
对服务浏览器列表条目的删除进行了修正
0.10
Jonathon Paisley贡献了这些修正
即使查询是单播的,也会始终进行多播回复
纠正了一个指针编码问题
现在可以以任何顺序写入记录
在失败时显示跟踪信息
更好的TXT记录解析
服务器现在与名称分开
可以取消服务浏览器
修改了一些单元测试以适应这些更改
0.09
在服务注销时删除所有记录
修复了readName的DOS安全问题
0.08
将许可协议更改为LGPL
0.07
在引擎上更快地关闭
出站名称的指针编码
ServiceBrowser现在正常工作
添加了新的单元测试
0.06
单元测试中的小改进
添加了定义的异常类型
新的样式对象
修复了主机名/接口问题
修复了套接字超时问题
修复了add_service_listener()的错别字错误
使用select()进行套接字读取
在Debian不稳定版上使用Python 2.2.2进行了测试
0.05
确保域名大小写不敏感
支持单播DNS查询
0.04
添加了一些单元测试
在需要的地方添加了__ne__附加程序
确保名称以“.local.”结尾
在接收套接字上设置超时以进行干净的关闭
许可协议
LGPL,有关详细信息,请参阅COPYING文件。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于安装软件包的信息。
源分布
构建分布
zeroconf-py2compat-0.19.17.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e8d3b399c5549813ed1543eda508b8dbea361b2b4839d9b2fe83ac099f4da9c |
|
MD5 | 3258d5f18d41c2285589a1e0cb9f5a75 |
|
BLAKE2b-256 | 0352d4341a06d5b24b3c1344629efe8affb384ddad2078480bc7b136c6b206a8 |
zeroconf_py2compat-0.19.17-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3ee218034396a7f2597817e3b6d90e2520e817e09dca4d0075898316fea0ee48 |
|
MD5 | b534c811251d6413185471c61f4b9525 |
|
BLAKE2b-256 | 41471226cd3a0b02725f5e6ebcf1fafa026b447f3b746709d11531f43a8d4bd4 |