- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python Twisted介绍
Twisted是用Python实现的基于事件驱动的网络引擎框架。Twisted诞生于2000年初,在当时的网络游戏开发者看来,无论他们使用哪种语言,手中都鲜有兼顾扩展性及跨平台的网络库。Twisted的作者试图在当时的环境下开发游戏,这一步走的非常艰难,他们迫切需要一个可扩展性高、基于事件驱动、跨平台的网络开发框架,为此他们决定自己实现一个,并从那些之前的游戏和网络应用程序的开发者中学习,汲取他们的经验教训。Twisted支持许多常见的传输及应用层协议,包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。就像Python一样,Twisted也具有“内置电池”(batteries-included)的特点。Twisted对于其支持的所有协议都带有客户端和服务器实现,同时附带有基于命令行的工具,使得配置和部署产品级的Twisted应用变得非常方便。21.1 为什么需要Twisted2000年时,Twisted的作者Glyph正在开发一个名为Twisted Reality的基于文本方式的多人在线游戏。这个游戏采用Java开发,里面尽是一堆线程—每个连接就有3个线程处理。处理输入的线程会在读操作上阻塞,处理输出的线程将在一些写操作上阻塞,还有一个“逻辑”线程将在等待定时器超时或者事件入队列时休眠。随着玩家们在虚拟世界中移动并交互时,线程出现死锁,缓存被污染,程序中的加锁逻辑几乎从来就没对过——采用多线程使得整个软件变得复杂、漏洞百出而且极难扩展。为了寻求其他的解决方案,作者发现了Python,特别是Python中用于对流式对象比如socket和pipe进行多路I/O复用的select模块(UNIX规范第3版(SUSv3)描述了select)。那时,Java并没有提供操作系统的select接口或者任何其他的异步I/O API(针对非阻塞式I/O的包java.nio已经在J2SE 1.4中加入了,2002年发布)。通过用Python中的select模块快速搭建起游戏的原型,这迅速降低了程序的复杂度,并且比多线程版本要更加可靠。Glyph迅速转向了Python、select以及基于事件驱动的编程。他使用Python的select模块为游戏编写了客户端和服务器。但他想要的还不止于此。从根本上说,他希望能将网络行为转变为对游戏中的对象的方法调用。如果你能在游戏中收取邮件会怎样,就像Nethack mailer这种守护进程一样?如果游戏中的每位玩家都拥有一个主页呢?Glyph发现他需要优秀的IMAP以及HTTP客户端和服务器的Python实现,而这些都要采用select。他首先转向了Medusa,这是一个在90年代中期开发的平台,在这里可以采用Python中的asyncore模块来编写网络服务。asyncore是一个异步化处理socket的模块,在操作系统的select API之上构建了一个调度器和回调接口。这对于Glyph来说是个激动人心的发现,但Medusa有两个缺点:这个项目到2001年就不再维护了,那正是glyph开发Twisted Reality的时候。asyncore只是对socket的一个薄封装层,应用程序的编写者仍然需要直接操作socket。这意味着程序可移植性的担子仍然落在程序员自己身上。此外,那时asyncore对Windows的支持还有问题,Glyph希望能在Windows上运行一个带有图形用户界面的客户端。Glyph需要自己实现一个网络引擎平台,而且他意识到Twisted Reality已经打开了问题的大门,这和他的游戏一样有趣。随着时间的推移,Twisted Reality这个游戏就演化成了Twisted网络引擎平台。它可以做到当时Python中已有的网络平台所无法做到的事情:使用基于事件驱动的编程模型,而不是多线程模型。跨平台:为主流操作系统平台暴露出的事件通知系统提供统一的接口。“内置电池”能力:提供流行的应用层协议实现,因此Twisted马上为开发所用。符合RFC规范,已经通过健壮的测试套件证明了其一致性。能很容易的配合多个网络协议一起使用。可扩展。21.2 Twisted架构概览Twisted是一个事件驱动型的网络引擎。由于事件驱动编程模型在Twisted的设计哲学中占有重要的地位,因此这里有必要花点时间来回顾一下究竟事件驱动意味着什么。事件驱动编程是一种编程范式,这里程序的执行流由外部事件来决定。它的特点是包含一个事件循环,当外部事件发生时使用回调机制来触发相应的处理。另外两种常见的编程范式是(单线程)同步以及多线程编程。我们用例子来比较一下单线程、多线程以及事件驱动编程模型。图21.1展示了随着时间的推移,这三种模式下程序所做的工作。这个程序有3个任务需要完成,每个任务都在等待I
您可能关注的文档
- Polar Si9000使用方法.ppt
- PLC中级培训.ppt
- POS机案例.ppt
- PowerBuilder程序设计教程第10章.ppt
- PPP新型大国关系齐鲁论坛.ppt
- PON基本原理.ppt
- PPT 常用图框、文字框汇总.ppt
- ppt 第10章 主成分分析与因子分析.ppt
- pp1 运输与配送概述.ppt
- PPT 超级链接篇.ppt
- 河南省开封市杞县 2024-2025学年七年级上学期期中质量检测道德与法治试卷(含答案).docx
- 2025年甘肃中考道德与法治一轮复习教材梳理九年上册第三单元 文明与家园(含答案).docx
- 天津市五区县重点校联考2024-2025学年高三上学期11月期中英语试题词汇背诵与检测(含答案).docx
- 江苏省无锡市2025届高三上学期期中考试 读后续写题型深入解读(含答案).docx
- 江苏省无锡市江阴市多校2024-2025学年五年级(上)期中语文试卷(有答案).docx
- 福建省福州市八县(市)协作校2024-2025学年高一上学期期中统考英语试卷(含答案).docx
- 天津市2024-2025学年高三上学期11月期中英语试题词汇背诵与检测(含答案).docx
- 广西南宁2024-2025学年高三上学期10月质量检测英语试卷(含答案).docx
- 2025年甘肃中考道德与法治热点专题突破:2024年巴黎奥运会(含答案).docx
- 广东省2024-2025学年高一上学期期中考试英语试题(含答案).docx
文档评论(0)