Twisted和Libtrent我需要担心阻塞吗?

2024-06-11 05:27:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在考虑使用twisted构建一个多协议应用程序。其中一个协议是bittorrent。因为libtorrent是一个相当完整的实现,它的python绑定似乎是一个不错的选择。 现在的问题是:

  • 要担心什么时候用扭曲的流,用libi?在
  • libtorrent网络层(使用boost.asio公司,一个异步网络环路)以任何方式干扰twisted epoll?在
  • 我是应该在线程中运行libtorrent会话,还是针对多进程应用程序设计?在

Tags: 网络应用程序协议进程方式twisted公司网络层
1条回答
网友
1楼 · 发布于 2024-06-11 05:27:50

我也许能为其中一些问题提供答案。在

libtorrents的所有逻辑,包括网络和磁盘I/O都是在单独的线程中完成的。所以,总的来说,对“封杀”的关注并不是那么大。假设您的意思是libtorrent函数不能立即返回。在

有些操作保证立即返回,这些函数不返回任何状态或信息。但是,确实返回某些内容的函数必须与libtorrent主线程同步,并且如果它处于重载状态(尤其是在调试模式下构建的具有不变检查和无优化的情况下),这种同步可能会很明显,尤其是在生成许多这样的函数时,而且通常是这样。在

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

它是否会干扰twisted的epoll;我不能肯定,但它似乎不太可能。在

我认为没有必要通过另一层线程与libtorrent交互,因为所有的工作都已经在单独的线程中完成了。在

相关问题 更多 >