用于编写P2P应用的Python库/框架

13 投票
7 回答
19277 浏览
提问于 2025-04-15 12:06

有没有什么库或者框架可以用来在Python中写点对点(P2P)应用程序呢?

我知道最初的Bittorrent客户端是用Python写的。我在找类似于JXTA的东西,不过是针对Python的。

7 个回答

3

自从这个问题被提出来并得到回答后,ZeroMQ 应运而生,我真的很喜欢它。这个Python模块叫做pyzmq。它让建立TCP连接变得简单多了,尤其是在处理除了请求-响应之外的消息模式时,当然它也能处理请求-响应模式。它非常适合基本的服务器、点对点应用、消息传递、分布式处理等等,功能非常强大。

4

我想到的最好选择就是使用 twisted

之前的 旧版BitTorrent 就是用这个做的。这个链接是最后一个已知的使用twisted的版本。你可以把它当作学习的起点。

还有 Vertex。这是一个使用twisted的库,可以实现点对点(p2p)连接,并且能够绕过防火墙。

19

Twisted几乎可以说是处理Python中任何网络相关问题的解决方案,但你得接受Twisted的工作方式。它本身并不是一个点对点(P2P)系统,而是一个事件循环、回调系统和网络框架。

Divmod Vertex目前没有在维护,而且我几年前尝试使用时感觉还挺粗糙的。

CSpace可能是最接近你所需要的东西:它是“一个用于安全、去中心化的用户间互联网通信的平台。”它把P2P和NAT穿越的复杂性隐藏起来,这样你的应用就可以正常工作,而不需要被称为“一个P2P应用”。

类似的,几年前在澳大利亚有一个叫“The Circle”的旧P2P系统,完全用Python编写,提供安全的P2P消息、聊天、文件共享等功能。最后一个版本是0.41c:http://savannah.nongnu.org/projects/circle/

还有我收藏中的一些链接:

http://entangled.sourceforge.net/是Entangled,“一个基于Kademlia的分布式哈希表(DHT),以及一个点对点元组空间实现。”

http://khashmir.sourceforge.net/是一个Python分布式哈希表,值得注意的是它使用Airhook协议进行网络连接,这个协议非常容错(设计用于例如蜂窝网络)。

http://kenosis.sourceforge.net/是一个Python的P2P远程过程调用(RPC)系统。

撰写回答