python – Twisted和libtorrent – 我需要担心阻塞吗?
作者:互联网
我正在研究使用twisted构建一个多协议应用程序.其中一个协议是bittorrent.由于libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择.
现在的问题是:
>当使用带有扭曲的libtorrent时,我是否需要担心阻塞?
> libtorrent网络层(使用boost.asio,异步网络循环)是否会以任何方式干扰扭曲的epoll?
>我是应该在线程中运行libtorrent会话还是以多进程应用程序设计为目标?
解决方法:
我或许能够为其中一些问题提供答案.
所有libtorrents逻辑,包括网络和磁盘I / O都是在不同的线程中完成的.所以,总而言之,“封锁”的关注并不是那么好.假设你的意思是libtorrent函数没有立即返回.
保证一些操作立即返回,不返回任何状态或信息的函数.但是,返回某些内容的函数必须与libtorrent主线程同步,如果负载很重(特别是在调试模式中使用不变检查而不进行优化时),这种同步可能会很明显,特别是在制作其中很多时,经常
有一些方法可以使用本质上更异步的libtorrent,并且一直在努力减少使用同步函数的需要.例如,不是单独查询所有种子的状态,而是可以订阅种子状态更新.异步通知通过pop_alerts()返回.
它是否会干扰扭曲的epoll;我不能肯定地说,但似乎不太可能.
我认为不需要通过另一层线程与libtorrent进行交互,因为所有的工作都是在不同的线程中完成的.
标签:python,twisted,bittorrent,libtorrent 来源: https://codeday.me/bug/20190703/1371139.html