Python 为什么有必要使用Twisted?

Python 为什么有必要使用Twisted?,python,asynchronous,twisted,Python,Asynchronous,Twisted,我已经在twisted框架上玩了大约一周了(更多是因为好奇而不是必须使用它),做事件驱动的异步网络编程非常有趣 然而,有一点我不明白。twisted文档以 Twisted是一个非常灵活的框架,可以让您编写功能强大的服务器 我的疑问是:-为什么我们需要这样一个事件驱动库来编写功能强大的服务器,而现在已经有了各种服务器的高效实现 当然,twisted开发人员在编写这个事件驱动的I\O库时,一定想到了不止两个具体的实现。那些是什么?到底为什么会被扭曲 为什么我们需要这样一个事件驱动库来编写功能强大的服

我已经在twisted框架上玩了大约一周了(更多是因为好奇而不是必须使用它),做事件驱动的异步网络编程非常有趣

然而,有一点我不明白。twisted文档以

Twisted是一个非常灵活的框架,可以让您编写功能强大的服务器

我的疑问是:-为什么我们需要这样一个事件驱动库来编写功能强大的服务器,而现在已经有了各种服务器的高效实现

当然,twisted开发人员在编写这个事件驱动的I\O库时,一定想到了不止两个具体的实现。那些是什么?到底为什么会被扭曲

为什么我们需要这样一个事件驱动库来编写功能强大的服务器,而现在已经有了各种服务器的高效实现

这么说吧:你无法想象当dyecast产品已经存在时,为什么会有人需要工具包

我猜您从来都不需要打开协议网关,例如
-通过unix套接字按需将守护程序写入md5本地文件
-使用udp查询软件并通过http公开统计信息

我为第二个例子写了一个小的概念证明,这个例子是关于一个问题的。没有扭曲,我无法做到这一点

<>你看了:

p>更多关于“为什么”:(免责声明:我不是一个扭曲的开发者),有必要考虑扭曲的高龄(相对于Python)。在编写Twisted时,没有足够强大的非阻塞网络/事件驱动库(当时几乎每个人都在使用线程)。Twisted最初的使用案例是一个大型多人游戏,尽管这个游戏的细节似乎有些过时了


正如@MattH的链接所表明的,由于起源,大量用Python编写的各种网络服务器都是基于Twisted的。

在对另一个答案的评论中,您说“每个库都应该有…”。“假设”是谁?拥有用例当然是确定需求的好方法,但这不是唯一的方法。同时讨论所有Twisted的用例也是没有意义的。没有任何用例可以证明Twisted中的每个API都是正确的。有成百上千种不同的用例,每种用例都有理由对Twisted进行更小或更大的细分。在Twisted多年的发展过程中,这些都来了又去,没有人试图保留它们的列表。我可以说,我研究了扭曲名称的一部分,这样我就可以为我当时发表的一篇论文找到一个主题。我在Twisted Conch中实现了vt102解析器,因为我痴迷于终端,希望有一个有趣的项目涉及到它们。我在Twisted Mail中实现了IMAP4支持,因为我在一家开发邮件服务器的公司工作,与当时提供的任何其他IMAP4服务器相比,该公司需要对邮件存储进行更严格的控制

因此,正如您所看到的,Twisted的不同部分是出于不同的原因编写的(我只给出了我自己的原因示例,没有给出任何其他开发人员的原因)

不过,从长远来看,编写程序的最初原因通常并不重要。现在代码已经写好了:Twisted Names现在为互联网上的许多域名运行DNS,vt102解析器帮助我找到了一份工作,推动IMAP4开发的公司已经倒闭。真正重要的是你现在可以用代码做什么有用的事情。正如MattH所指出的,由此产生的大量功能已经产生了一个库,它(可能是唯一的)解决了一系列有趣的问题。

Twisted的创建者应该会给你答案


它改变了我对扭曲的看法。在我将其视为一个具有界面和奇怪名称的大型软件之前,许多开发人员不喜欢这两件事,但实际上这只是表面现象。现在,我已经看到了它背后的历史和惊人数量的用例,我非常尊重它。生命是短暂的,你需要的是:)

谢谢你的回应。然而,我无法理解为什么Twisted最初被创建。每个库都应该有几个具体的实现;在这种情况下,它们是什么?有一些中间件库没有特定的实现和/或预定的用途,它们意味着足够通用,以便其他应用程序使用中间件,而不是直接使用套接字或其他更低级的东西。所谓“实现”是指“使用”吗?我熟悉“实现”一词的两种含义:编写软件以完成特定任务;或者在特定配置中部署软件。是的,我指的是以前编写的软件,以实现特定任务。有点吹毛求疵:尽管有命名,但我相信Twisted的架构更像proactor模式,而不是reactor模式。还请注意,不仅用例影响项目,其他类型的需求,如非功能性需求(可用性、安全性等),也可能比简单的用例更重要。不幸的是,blip删除了该视频:(