在Twisted中实现Direct Connect客户端的正确方法?

时间:2009-12-06 22:10:29

标签: python twisted p2p

我正在为Direct Connect P2P网络编写Python客户端。从本质上讲,它的工作原理是连接到中央服务器,并响应正在搜索文件的其他用户。

有时,另一位客户会要求我们连接到他们,他们可能会开始从我们这里下载文件。这是与其他客户端的直接连接,不通过中央服务器。

处理与其他客户的这些连接的最佳方法是什么?我目前正在使用一个Twisted反应器连接到服务器,但是它是否更好地拥有多个反应器,每个客户端一个,每个反应器在不同的线程中运行?或者,拥有一个完全独立的Python脚本来执行与客户端的连接会更好吗?

如果还有其他一些我不了解的解决方案,我很乐意听到。我是Twisted编程的新手,所以我愿意接受建议和其他资源。

谢谢!

1 个答案:

答案 0 :(得分:3)

在不知道协议的所有细节的情况下,我仍然建议使用单个反应堆 - 反应堆很好地完全(特别是高级的反应堆,如PollReactor),这样你将避免与线程相关的开销(这就是Twisted和其他异步系统如何通过避免这种开销来实现其基本性能提升)。实际上,Twisted中的线程主要用于需要连接到函数可能阻塞的库时。