twisted好吗?

7 投票
4 回答
5471 浏览
提问于 2025-04-15 23:33

我总是听到大家在讨论Python的Twisted,感觉它很火,但我觉得它实在是太复杂了。你觉得用简单的套接字更容易上手,还是用Twisted更简单呢?

4 个回答

3

我觉得这个挺不错的。你可以看看这一页关于使用Twisted的项目

4

Twisted 是一个处理并发的框架。它可以让你在一个应用程序中同时处理多个任务,而不需要使用线程或进程。它是通过一种基于事件驱动的异步系统来实现的,特别适合网络应用。异步代码通常和普通代码有点不一样,因为它的执行流程不是很明确,而是根据外部事件来决定的。这可能会让人感到困惑,但它确实能正常工作。Twisted 可以说是最成熟的 Python 异步并发库,所以如果你打算做这方面的事情,选择 Twisted 是个不错的选择。

你提到的“简单套接字”其实是基本的通信工具,和 Twisted 不能直接比较。你到底想要做什么呢?

30

我坚持我在《Python编程快速上手》(第二版第540页)中写的内容:

Twisted是一个强大的框架,里面有很多高级组件,比如网页服务器、用户认证系统、邮件服务器和客户端、即时通讯、SSH客户端和服务器、DNS服务器和客户端等等,同时它也提供了这些高级组件所依赖的底层基础设施。每个组件都可以轻松扩展和定制,而且它们之间可以很好地协同工作。Twisted的强大和Python的灵活性让我们在仅仅下载两兆的情况下,就能实现这么多功能。

问这个功能丰富且强大的框架是否比“简单的套接字”更“简单好用”,就像问一辆车是否比螺丝钉更“简单好用”一样,真是个奇怪的问题!

车是用螺丝钉(还有其他东西)造的,不能说它就比螺丝钉“简单好用”——因为螺丝钉的功能太少,而车的功能却很多。

但是如果你想从A点到B点(可能还要带上乘客、行李、宠物……),螺丝钉就帮不上什么忙了(除非你打算从零开始造一辆车;-)。

当然,车不是从A到B的唯一方式,就像Twisted也不是用Python构建网络系统的唯一选择。马车(比如asyncore)虽然古朴有趣,但不太实用;高速列车(比如tornado)可能更容易使用,速度也快,但灵活性差;而且根据不同的需求,你可能会选择各种其他交通工具,从独轮车到游轮(在Python中和网络相关的各种其他包,从paramikodnspython)——它们都包含了螺丝钉作为组件的一部分(就像它们都包含了套接字作为构建的一部分),但没有一个会像“简单的套接字”那样容易使用,每个工具在其适用范围内都能为你提供比“简单的套接字”更多的功能。

Twisted在很多情况下都是一个很好的选择,尤其是当你需要整合多种功能或者实现某种没有现成解决方案的协议时,通常它是最好的选择。而“简单的套接字”只是一个低级组件,其他更高级、更复杂的功能都是基于它构建的,除了学习之外,几乎没有理由去“自己动手”从头开始基于套接字构建更高级的组件——就像你几乎没有理由用晶体管、电阻、电容等自己组装一台电脑,而不是选择合适的集成电路一样;-)。

撰写回答