我正在编写一个专线接入P2P网络的Python客户端。从本质上讲,它的工作方式是连接到中央服务器,并响应正在搜索文件的其他用户。
有时,另一个客户端会要求我们连接到他们,他们可能会开始从我们那里下载文件。这是到另一个客户端的直接连接,而不是通过中央服务器。
处理这些与其他客户端的连接的最佳方式是什么?我目前使用一个Twisted反应器来连接到服务器,但是有多个反应器,每个客户端一个,每个都运行在不同的线程中是不是更好?或者,使用一个完全独立的Python脚本来执行与客户端的连接是否更好?
如果有其他我不知道的解决方案,我很想听听。我是一个使用Twisted编程的新手,所以我对建议和其他资源持开放态度。
谢谢!
发布于 2009-12-07 08:31:38
在不了解协议所有细节的情况下,我仍然建议使用单个反应器--反应器具有很好的伸缩性(特别是像PollReactor
这样的高级反应器),这样您就可以避免与线程相关的开销(毕竟,这就是Twisted和其他异步系统通过避免此类开销而获得基本性能提升的原因)。在实践中,Twisted中的线程主要在需要连接到函数可能阻塞的库时很有用。
https://stackoverflow.com/questions/1856786
复制相似问题