python – Twisted和libtorrent – 我需要担心阻塞吗?

我正在研究使用twisted构建一个多协议应用程序.其中一个协议是bittorrent.由于libtorrent是一个相当完整的实现,它的
python绑定似乎是一个不错的选择.

现在的问题是:

>当使用带有扭曲的libtorrent时,我是否需要担心阻塞?
> libtorrent网络层(使用boost.asio,异步网络循环)是否会以任何方式干扰扭曲的epoll?
>我是应该在线程中运行libtorrent会话还是以多进程应用程序设计为目标?

最佳答案 我或许能够为其中一些问题提供答案.

所有libtorrents逻辑,包括网络和磁盘I / O都是在不同的线程中完成的.所以,总而言之,“封锁”的关注并不是那么好.假设你的意思是libtorrent函数没有立即返回.

保证一些操作立即返回,不返回任何状态或信息的函数.但是,返回某些内容的函数必须与libtorrent主线程同步,如果负载很重(特别是在调试模式中使用不变检查而不进行优化时),这种同步可能会很明显,特别是在制作其中很多时,经常

有一些方法可以使用本质上更异步的libtorrent,并且一直在努力减少使用同步函数的需要.例如,不是单独查询所有种子的状态,而是可以订阅种子状态更新.异步通知通过pop_alerts()返回.

它是否会干扰扭曲的epoll;我不能肯定地说,但似乎不太可能.

我认为不需要通过另一层线程与libtorrent进行交互,因为所有的工作都是在不同的线程中完成的.

点赞