扭曲有什么好处?

时间:2010-06-04 13:59:48

标签: python sockets twisted

我一直听到关于Twisted for python的所有这些炒作,但我发现它简直令人困惑。你认为什么更简单易用?简单的插座或实现扭曲?

4 个答案:

答案 0 :(得分:28)

我支持我在Python in a Nutshell(第2版,第540页)中所写的内容:

  

扭曲包括强大的,高级的   Web服务器,用户等组件   认证系统,邮件服务器   和客户端,即时消息,SSH   客户端和服务器,DNS服务器和   客户等等,以及   较低级别的基础设施   所有这些高级组件都是   建成。每个组件都很高   可扩展且易于定制,以及   所有都集成到互操作   顺利。这是对权力的致敬   Python的独创性和   Twisted的开发人员可以做到这么多   完成两兆字节'   值得下载。

询问这个令人难以置信的丰富而强大的框架是否比“简单套接字”更“易于使用”有点像询问汽车是否“比使用螺丝更简单”:什么是怪异问题!

汽车用螺钉(以及其他东西)构建,并且不能“简单易用” - 仅仅因为螺丝很少,汽车就能做到这么多。 / p>

但是如果你想从A到B(并且可能载着乘客,行李箱,宠物......)螺丝也没多大帮助(除非你基本上要从头开始制造汽车;-)

当然,汽车并不是从A到B的唯一途径,就像扭曲不是在Python中构建以网络为中心的系统的唯一方式一样。马和马车(如asyncore)古朴而有趣,虽然不太实用;高速列车(如tornado)可能更容易使用,至少同样快,但灵活性较差;并且出于各种专业目的,您可能更喜欢各种其他交通工具,从单轮脚踏车到游轮(例如,在Python和网络中,各种其他包裹,从paramikodnspython) - 所有它们将包括螺钉作为其组件的一部分(例如,所有将包括插座作为它们构建方式的一部分),没有一个将像“简单插座”一样易于使用,每个(在其自身的适用范围内)对你来说,除了“简单的插座”之外,它可能会做得更多。

Twisted在很多情况下都是一个很好的选择,当您需要集成功能的多个方面和/或实现某些没有完全打包的解决方案的协议时,这通常是最好的选择。 “简单套接字”不是 - 它们只是一个低级组件,其中构建了更高功能,更高级别的组件,并且很少有一个很好的理由(除了学习,当然)“滚动自己“更高级别的组件”从头开始“在插座上构建”(而不是选择功能强大,精心构建的现有组件) - 就像你很少有理由用晶体管,电阻器,电容器等构建自己的计算机一样,而不是选择合适的集成电路; - )。

答案 1 :(得分:4)

Twisted是一个并发框架。它允许您在一个应用程序中处理多个任务,而无需使用线程/进程。它使用事件驱动的异步系统来实现这一点,尤其适用于网络应用程序。异步代码通常与普通代码有点“不同”,因为流程不是明确的,事情是基于外部事件发生的。这可能令人困惑,但它确实有效。 Twisted可以说是最成熟的Python异步并发库,所以如果这就是你打算做的事情,那么扭曲就是一件好事。

“简单套接字”,因为你把它们作为通信原语,并没有真正可比的扭曲。你想做什么?

答案 2 :(得分:3)

我说这很好。只需看看this page of projects using twisted

答案 3 :(得分:0)

Twisted于2002年首次发布,自那时起大幅膨胀; (这是一个敏感的主题,许多人会认为这在框架中是好的和必要的) - 然而对于现在接近项目的人来说,这可能有点令人生畏。但是,如果您正在推动异步框架,那么有一些选择。我发现这个博客很有趣:http://nichol.as/asynchronous-servers-in-python。除了基准之外,单独的代码示例非常有趣。

相关问题