Ant*_*lev 83 python comparison twisted
我越来越多地听说Python的Twisted框架和其他框架比较苍白.
任何人都可以对此有所了解,并可能将Twisted与其他网络编程框架进行比较.
Jea*_*one 129
Twisted有很多不同的方面,你可能会觉得很酷.
Twisted包含大量的协议实现,这意味着很可能会有一个API可用于与某个远程系统(在大多数情况下是客户端或服务器)进行通信 - 无论是HTTP,FTP,SMTP,POP3,IMAP4,DNS,IRC,MSN,OSCAR,XMPP/Jabber,telnet,SSH,SSL,NNTP,或其中一个非常模糊的协议,如Finger,或者身份,或者像DJB的 netstrings这样的低级协议构建协议之一,简单面向行的协议,甚至是Twisted的自定义协议之一,如Perspective Broker(PB)或异步消息传递协议(AMP).
Twisted的另一个很酷的事情是,除了这些低级协议实现之外,你经常会发现一个更容易使用的抽象.例如,在编写HTTP服务器时,Twisted Web提供了一个"资源"抽象,它允许您使用Python对象构造URL层次结构,以定义如何响应请求.
所有这些都与合作的API捆绑在一起,主要是因为这些功能都不是通过阻塞网络实现的,所以你不需要为你想要做的每个操作启动一个线程.这有助于人们通常归因于Twisted的可扩展性(尽管它只涉及一台计算机,而不是那种允许您的应用程序增长以使用整个主机集群的可伸缩性),因为Twisted可以处理数千个单个线程中的连接,往往比拥有数千个线程更好地工作,每个线程用于单个连接.
避免线程化也有利于测试和调试(因此通常也是可靠的).由于在典型的基于Twisted的程序中没有先发制人的上下文切换,因此通常不需要担心锁定.通过模拟这些网络事件,可以轻松地对依赖于发生的不同网络事件的顺序的竞争条件进行单元测试(而模拟上下文切换不是大多数(任何?)线程库提供的功能).
Twisted也非常关心质量.因此,您很少会在Twisted版本中找到回归,并且大多数API都可以正常工作,即使您没有以通用方式使用它们(因为我们尝试测试您可能使用它们的所有方式,而不仅仅是常见的办法).对于在过去3年或4年内添加到Twisted(或修改)的所有代码尤其如此,因为从那时起100%的线覆盖率一直是最低测试要求.
另一个经常被忽视的Twisted实力是它十年来找出不同的平台怪癖.在不同的平台上有很多未记录的套接字错误,很难知道它们甚至存在,更不用说处理它们了.Twisted已逐渐覆盖了越来越多的这些,而且在这一点上相当不错.较年轻的项目没有这种经验,因此他们会错过模糊的故障模式,这些模式可能只会发生在您发布的任何项目的用户身上,而不会发生在您身上.
所有这一切,我觉得Twisted最酷的是它是一个非常无聊的库让我忽略了很多非常无聊的问题,只关注有趣和有趣的事情.:)
嗯,这可能是根据口味.
Twisted允许您轻松创建事件驱动的网络服务器/客户端,而无需担心实现此目的的所有内容.由于麻省理工学院的许可证,Twisted几乎可以在任何地方使用.但是我没有做任何基准测试,所以我不知道它如何扩展,但我猜得很好.
另一个优点是Twisted Projects,您可以使用它快速查看如何实现您想要的大多数服务器/服务.
Twisted也有一些很棒的文档,当我几周前开始使用它时,我能够快速获得一个工作原型.
对于蟒蛇场景来说,如果我错了,请纠正我.