许多 python 库,甚至是最近编写的库,都使用 httplib2 或套接字接口来执行网络任务。
由于它们的阻塞特性,它们显然比 Twisted 更容易编码,但我认为这是将它们与其他代码集成时的一个缺点,尤其是 GUI 代码。如果您希望在避免多线程的同时实现可扩展性、并发性或 GUI 集成,那么 Twisted 是一个自然的选择。
所以我会对这些问题的意见感兴趣:
- 是否应该使用 Twisted 编写新的网络代码(小型命令行工具除外)?
- 你会在同一个项目中混合使用 Twisted、http2lib 或 socket 代码吗?
- Twisted pythonic 是否适用于大多数库(它比替代品更复杂,引入对非标准包的依赖......)?
编辑:请让我换一种说法。您是否觉得使用 Twisted 编写新的库代码可能会阻碍其采用?Twisted 具有明显的优势(尤其是 gimel 所述的可移植性和可扩展性),但它不是核心 python 库这一事实可能被某些人认为是一个缺点。