我正在为 Direct Connect P2P 网络编写一个 Python 客户端。本质上,它的工作原理是连接到中央服务器,并响应正在搜索文件的其他用户。
有时,另一个客户会要求我们连接到他们,他们可能会开始从我们这里下载文件。这是与其他客户端的直接连接,不通过中央服务器。
处理与其他客户端的这些连接的最佳方法是什么?我目前正在使用一个 Twisted 反应器连接到服务器,但是是否最好拥有多个反应器,每个客户端一个,每个反应器在不同的线程中运行?或者有一个完全独立的 Python 脚本来执行与客户端的连接会更好吗?
如果还有其他我不知道的解决方案,我很想听听。我是 Twisted 编程新手,因此我愿意接受建议和其他资源。
Thanks!
在不了解协议的所有细节的情况下,我仍然建议使用单个反应器——反应器规模quite好(特别是高级的,例如PollReactor
)这样您就可以避免与线程相关的开销(毕竟,这就是 Twisted 和其他异步系统通过避免此类开销来获得基本性能提升的方式)。实际上,Twisted 中的线程主要在您需要连接到某个库(该库的函数可能会阻塞您)时非常有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)