我一直在使用扭曲的框架大约一个星期(更多是因为好奇而不是必须使用它)而且它在进行事件驱动的异步网络编程时非常有趣。
然而,有些事情我无法理解。扭曲的文档以
开头
Twisted是一个非常灵活的框架,可让您编写功能强大的服务器。
我的疑问是: - 为什么我们需要这样一个事件驱动的库来编写功能强大的服务器,因为那里已经有非常高效的各种服务器实现?
当然,在编写这个事件驱动的I \ O库时,扭曲的开发人员必须考虑的不止一些具体实现。那些是什么?为什么要扭曲呢?
答案 0 :(得分:13)
在对另一个答案的评论中,你说“每个图书馆都应该......”。 “假设”由谁?使用案例肯定是确定要求的好方法,但这不是唯一的方法。同时讨论所有Twisted的用例也没有意义。没有用例证明Twisted中的每个API都是合理的。有数百或数千个不同的用例,每个用例都证明Twisted的细分较小或较大。这些经历了Twisted开发的多年来,并没有尝试保留它们的列表。我可以说我在扭曲名称的一部分工作,所以我会有一个主题,我当时正在介绍一篇论文。我在Twisted Conch中实现了vt102解析器,因为我迷恋终端并想要一个涉及它们的有趣项目。我在Twisted Mail中实现了IMAP4支持,因为我在一家开发邮件服务器的公司工作,该邮件服务器需要比当时提供的任何其他IMAP4服务器更严格地控制邮件存储。
所以,正如你所看到的,Twisted的不同部分是出于各种不同的原因编写的(我只给出了我自己的原因的例子,而不是任何其他开发人员的原因)。
从长远来看,编写程序的最初原因往往并不重要。现在编写代码:Twisted Names现在为互联网上的许多域名运行DNS,vt102解析器帮助我找到了工作,推动IMAP4开发的公司已经停业。真正重要的是您可以使用代码现在做些有用的事情。正如MattH指出的那样,由此产生的过多功能导致了一个库(可能是唯一的)解决了大量有趣的问题。
答案 1 :(得分:7)
为什么我们需要这样一个事件驱动的库来编写功能强大的服务器,而这些服务器已经非常有效地实现了各种服务器?
所以解释:你无法想象为什么有人在染色产品已经存在时需要一个工具包呢?
我猜你从来不需要敲响协议网关,例如
- 根据需要通过unix套接字将守护进程写入md5本地文件
- 使用udp查询一个软件并通过http。
我在handful of minutes中针对SO的问题为第二个例子写了一个小概念验证。没有扭曲,我不能那样做。
你看过:ProjectsUsingTwisted?
答案 2 :(得分:5)
更多关于'为什么':( 免责声明:我不是Twisted的开发者),有必要考虑Twisted的高龄(相对于Python)。当写入Twisted时,没有足够强大的非阻塞网络/事件驱动库围绕reactor pattern编写(几乎所有人当时都在使用线程)。 Twisted的最初用例是一款大型多人游戏,虽然这款游戏的具体细节似乎有些时间丢失了。
由于源自@ MattH的链接,所以用Python编写的大量各种网络服务器基于Twisted。
答案 3 :(得分:4)
This PyCon talk应该给你答案。
它改变了我对Twisted的看法。之前我认为它是一个带有接口和奇怪名称的大量软件,许多开发人员不喜欢这两件事,但实际上只是肤浅的东西,现在我已经看到了背后的历史和令人惊讶的用例数量,我尊重它很多。生命是短暂的,你需要扭曲:)