用于编写P2P应用的Python库/框架
有没有什么库或者框架可以用来在Python中写点对点(P2P)应用程序呢?
我知道最初的Bittorrent客户端是用Python写的。我在找类似于JXTA的东西,不过是针对Python的。
7 个回答
自从这个问题被提出来并得到回答后,ZeroMQ 应运而生,我真的很喜欢它。这个Python模块叫做pyzmq。它让建立TCP连接变得简单多了,尤其是在处理除了请求-响应之外的消息模式时,当然它也能处理请求-响应模式。它非常适合基本的服务器、点对点应用、消息传递、分布式处理等等,功能非常强大。
我想到的最好选择就是使用 twisted。
之前的 旧版BitTorrent 就是用这个做的。这个链接是最后一个已知的使用twisted的版本。你可以把它当作学习的起点。
还有 Vertex。这是一个使用twisted的库,可以实现点对点(p2p)连接,并且能够绕过防火墙。
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)系统。