Twisted网络编程必备(一)
0.1 为什么使用Twisted?
如果你并不准备使用Twisted,你可能有很多异议。为什么使用Twisted而不是其他网络函数库或框架?如下是一些充分的理由:
·基于Python
Twisted是使用Python编写的,强壮的、面向对象的解释性语言。Python使它的爱好者充满热情。使用Python编程是一种乐趣,易于编写、易于阅读、易于运行。因为Python是跨平台的,所以可以运行Twisted程序在Linux、Windows、Unix和MAC等等系统上。
·异步和事件驱动的
同步网络编程函数库留给开发者一个痛苦的抉择:要么允许程序在网络通信时失去响应,或者引入非常复杂的线程。Twisted是基于事件的,异步网络通信框架允许编写的程序在处理事件时保持相应,却不需要使用线程。
·多功能
Twisted包括大量的功能。Email、WEB、news、chat、DNS、SSH、Telnet、RPC、数据库存取或者更多。所有的都为你准备好了。
·灵活
Twisted提供了高层类允许快速开始。而且并没有感到受限。如果需要高级功能,或者需要自定义网络协议,也是可以的。你可以实现自己的网络协议,控制每一个字节。
·开放源代码
Twisted是免费的。它包含源代码,按照函数库协议发行。并且欢迎在你的程序中使用Twisted,不必支付任何费用和担心法律问题。如果希望知道一个对象的运行原理也可以直接看源码。如果你开发出了自己的新功能和扩展,欢迎与我们共享。
·社区支持
Twisted有一个活跃的社区包含开发者和用户。如果你发现了问题,也可以在邮件列表上到很多开发者来帮助你。查看第一章的寻FAQ一节。或者进入#twisted这个IRC频道,来与开发者进行在线交流。
·易于整合的平台
一个Twisted程序可以在多种服务之间共享数据,可以整合很多工作。比如可以编写SMTP到XMLRPC的代理,一个通过SSH来更新网站的服务,或者一个包含NNTP接口的WEB讨论组。如果需要在平台之间交换数据,Twisted是个很好的选择。:if expand("%") == ""|browse confirm w|else|confirm w|endif
0.2 本书包含的内容
本书并不是讲解Twisted框架中的每一个类,而是关注于更加真实的例子。本书也会帮助你理解Twisted中使用的关键技术和设计模式。如下是主要内容列表:
·安装Twisted
第一章讲解了下载和安装还有平台相关扩展库。
·使用TCP连接
第二章告诉你如何使用Twisted建立TCP连接,包括服务器和客户端。
·WEB客户端和服务器
第三、四章讲解了如何使用Twisted工作于WEB之上。第三章模拟WEB客户端。第四章编写了一个示例HTTP服务器,实现了基本的等级管理和响应功能。
·WEB服务和RPC
Twisted内置支
持了多种WEB服务和远程调用方法。第五章讲解了如何在REST架构下建立应用。也讲解了如何编写XMLRPC和SOAP客户端和服务器,和如何将Python对象转换为网络连接。
·认证
管理用户和认证权限是很多程序的核心功能之一。第六章讨论了实现方法,并提供了在多种不同应用中具有很好移植性的框架。
·客户端和服务器
第七、八章给出了支持。第七章的例子展示了如何编写SMTP、POP3、IMAP客户端来收发。第八章展示了如何构建SMTP、POP3、IMAP服务器。
·Usenet新闻组
第九章讨论了使用NNTP协议的Usenet客户端和服务器。并展示了如何阅读和发送消息,如何运行NNTP服务器,如何使用NNTP作为其他方式的接口,如RSS等。
·SSH客户端和服务器
第十章讲解了SSH支持。例举了编写SSH服务器的程序,并提供了远程可用的Python解释器。这一章也展示了如何编写SSH客户端来执行远程命令。
·运行和管理Twisted程序
第十一章展示了如何使用Twisted工具运行和管理应用程序,比如作为后台精灵线程,使用setuid和chroot限制权限,和写入日志文件。
1.0 快速开始
在你使用Twisted进行开发之前,你应该下载并安装。这一章讲解在各种操作系统下的安装过程。也包括将Twisted实用工具加入到路径和熟悉文档。其他问题可以到Twisted社区提问。
1.1 安装Twisted
首先应该下载Twisted用于安装。可以到twistedmatrix/projects/core/下载。为了安装附加属性,还可以安装另外两个可选软件包。
Twisted网络编程必备(二)
1.1.1 下面该如何做?
到twistedmatrix下载最新版本的Twisted。然后安装PyOpenSSL(一个Python开源OpenSSL库),这个软件包用于给Twisted提供加密传输支持(SSL)。最后,安装PyCrypto,一个包含了Python安全算法的包,用于提供SSH支持。这些软件包的下载地址在后面各个节中指定。
为了使用Twisted并不一定要安装PyOpenSSL和PyCrypto。但是不安装这些,将无法使用Twisted的SSL和SSH功能,其他功能还是可用的。
1.1.1.1 Windows
到twistedmatrix/projects/core/下载Windows版Python2.4安装包。这个二进制包包含了Twisted的核心功能,包括大量的扩展包和协议支持。如果需要安装更多的例子,可以到twistedmatrix/products/download下载"Twisted Dependencies for Windows"。这个安装包已经包含了PyOpenSSL和PyCrypto。
这些页面有可能已经移动到其他页面中了,并且增加了一些新功能。如果不到这些连接,可以尝试从twistedmatrix访问。
如果一次下载了这三个软件包,运行Twisted安装程序。这是一个小的安装包,可以自动检测Python安
装路径
python默认安装路径,下一步运行PyOpenSSL和PyCrypto安装包。这些都是很简单的,也只需要很少的几秒钟。
当编译Twisted模块时,可能需要一点时间,进度条会显示当前状态。解包也会耗费几分钟。
证实是否安装成功的方法是导入twisted包。
$ python
... ...
>>> import twisted
>>>
如果"import twisted"执行成功而没有错误,则已经安装好了Twisted。
1.1.1.2 MAC OS X, Linux, 与BSD
很多Linux和BSD的发行版,包括Debian、Ubuntu、Gentoo、Red Hat、FreeBSD等等已经预先安装
了Twisted了,而且PyOpenSSL和PyCrypto也是可用的。可以检查你的OS是否被Twisted下载页所提及,或者搜索已经安装包历史可以看到。如果已经安装了,最好确保版本是Twisted 2.0或更高,而不是1.3的release版本。
如果没有预安装Twisted,则需要下载源码来安装。
1.2 从源码安装
如果你的操作系统上没有预安装Twisted,则需要从源代码安装。不必担心,从源码安装对于Python也很简单。
1.2.1 下面如何做
首先,下载完整的Twisted源码包。附带的包可以让Twisted功能更多。运行本书的大多数例子都需要完整的安装。一旦下载了软件包,就解压到工作目录。
$ tar -xjvf ~/downloads/TwistedSumo-2005-03-22.tar.bz2
下一步进入解压后的目录。Twisted依赖于zope.interface包,而这个包已经附带在了Twisted Sumo发行包中了。解压ZopeInterface压缩包:
$ tar -xzvf ZopeInterface-3.
进入ZopeInterface目录,运行命令"python setup.py install"。这个命令将会构建和安装zope.interface包到python安装目录的lib/site-packages/twisted目录。这里是需要Administrator/root权限的。所以使用su或sudo来增加权限级别。
$ cd ZopeInterface-3.0.1
$ python setup.py install
一旦zope.interface安装完成,就可以安装Twisted了。在Twisted目录下,运行"python setup.py install"。这个命令将会编译Twisted的C模块,并安装Twisted:
$ cd TwistedSumo-2005-03-22
$ python setup.py install
如果你已经安装了多个版本的Python,确保Twisted安装在你正在运行的python命令对应的那个版本上。书的例子可以运行在Python 2.3或更高版本。检查你的Python版本通过"python -V"。
祝贺,你已经成功安装了Twisted。现在测试一下是否安装成功,运行Python提示符:
$ python
>>> import twisted
>>>
如果"import twisted"语句执行成功则Twisted安装成功了。
下一步,下载最新版本的PyOpenSSL(pyopenssl.sourceforge)。PyOpenSSL运行在OpenSSL库之上,所以你需要确保OpenSSL已经安装了。Mac OS X已经默认安装了OpenSSL,并包含了头文件,Linux和BSD的大部分发行版也默认包含了这些。
如果你正巧倒霉安装了一个默认没有OpenSSL库的发行版,则需要下载并安
装源码包,从这里()。
为了安装PyOpenSSL,需要执行如下步骤。首先解压下载文件:
$ tar -zxvf PyOpenSSL-0.
然后,选择PyOpenSSL库并运行"python setup.py install",使用root用户。
$ cd PyOpenSSL-0.6
$ python setup.py install
当安装完成了,确保OpenSSL包是可用的,可以用导入来测试:
$ python
>>> import OpenSSL
>>> import twisted.internet.ssl
>>> twisted.internet.ssl.SSL
<module 'OpenSSL.SSL' from
'....'>
如果没有看到任何错误,则已经为Twisted成功的安装了SSL支持。
最后一个需要安装的包是PyCrypto。PyCrypto是Python的加密工具集,是A.M.Kuchling开发的一个包含了众多加密算法实现的包。Twisted使用PyCrypto来支持SSH连接。
从(www.amk.ca/python/code/crypto.html)来下载,并解压:
$ tar -xzvf pycrypto-2.
运行很熟悉的"python setup.py install"来安装,在PyCrypto的目录中。
$ cd pycrypto-2.0
$ python setup.py install
确保这个包是否安装成功可以用导入测试。你可以测试ansport模块可以使用PyCrypto的RSA实现:
$ python
>>> import Crypto
>>> ansport
>>> ansport.RSA
<module 'Crypto.PublicKey.RSA' from
'....'>
如果是如上的显示,则你已经成功的安装了PyCrypto。在这个是时候,你就可以利用Twisted,并且使用SSL和SSH功能了
Twisted网络编程必备(三)
1.3 添加Twisted实用工具到PATH路径参数
Twisted包含了一些实用工具脚本。为了方便使用,应该将他们添加到PATH可以到的地方。
1.3.1 下面如何做
一般来说,所有添加到PATH的路径都是可以被OS到的。按照如下步骤来做。
1.3.1.1 Windows
Twisted的使用工具将会安装到Python的scripts目录(典型为c:\Python23\scripts)。Twisted包含了一些菜单设置程序,可以通过Programs->Twisted->Twisted Command Prompt。来进入。使用这个菜单入口可以使用提示符模式来运行实用工具,而且已经自动设置好了PATH路径了。
1.3.1.2 Linux
Twisted的使用工具将会安装到python二进制目录的相同文件夹(可能是/usr/bin或/usr/local/bin),所以需要将这个路径添加到PATH路径。
1.3.1.3 Mac OS X
如果正在使用Mac OS X 2.3 (jaguar)或更新版本,Twisted已经默认安装在了(/System/Library/Frameworks/Python.framework/Versions/Current/bin。将这个路径添加到PATH变量。
$ set PATH=$PATH:/System/Library/Frameworks/Python.framework/Versions/Current/bin
1.4 使用Twisted的文档
Twisted包含了一些不同类型的文档,包括扩展API文档、HOWTO文档、快速入门和例子程序。十分推荐尽快熟悉这些文档,并在开发过程中提供帮助。
1.4.1 下面如
何做
Twisted的文档是在网站上在线观看的。一个完整的API文档在(twistedmatrix/documents/current/api)。为了编程,你需要多次使用这个文档。这份API文档是由代码自动生成的,所用的工具是Twisted的一个组件叫做lore。
Twisted是由一些子工程构成的,每个子工程包含自己的文档。例如,核心模块文档在(twistedmatrix/projects/core/documentation),而关于WEB模块的文档在(twistedmatrix/projects/web/documentation)。在主页有进入每一个子工程的链接。
每个子工程都包含以下类型的文档:
·HOWTOs
描述特殊功能和如何使用这些功能。并不覆盖所有的只是,但可以提供对特定任务的快速入门。包含在HOWTOs中的快速入门(tutorial)叫做"Twisted From Scratch",讲解如何开发一个应用程序,并扩展的讲解一些高级内容。
·Examples
简短而特别的Twisted代码,有点像HOWTOs,但是可以在使用中对特定功能提供有效的帮助。
·Manual pages
这是HTML版本的manpages,描述了如何使用Twisted实用工具。
1.4.2 关于
如果想要浏览文档而不通过浏览器,那么可以直接使用pydoc工具来浏览。pydoc并不能展示Twisted文档中所有的标志,当仍然很有用。Figure 1-1展示了pydoc展示twisted.web.http的信息。
当然,真的想要理解Twisted的工作,可以阅读Twisted的源代码。因为有些模块为了性能而使用了C语言来写,除此之外可以到site-packages/twisted目录中查看。或者打开appropriate.py文件。
1.5 为自己的问题寻答案
大多数问题可以从文档中自己到答案,或者可以从社区得到答案。
1.5.1 下面如何做
有一些有益的社区资源可以提供帮助。首先是邮件列表。"twisted-python"列表是提供一般讨论的。"twisted-web"列表提供了WEB应用程序的讨论。如果问题提错了地方,会被自动转到另外一个讨论组。可以在如下地址申请讨论组:
twistedmatrix/cgi-bin/mailman/listinfo/twisted-python
twistedmatrix/cgi-bin/mailman/listinfo/twisted-web
第二,可以在#twisted和#twisted.web这两个IRC频道讨论问题(freenode)。这些频道是一直开放且有趣的,问题可以很及时的得到回答。如果不要求及时得到答复,最好还是到邮件列表讨论,这种方式提供更加广泛的关注,并且可以让更多的人分享。
最后的可用资源是Planet Twisted社区。地址在planet.twistedmatrix,这个站点的weblog提供了大量的知识。这是一种很好的获取知识的方式,这也提供了RSS订阅方式planet.l。
2. 建立简单的客户端和服务器
使用Twisted进行开发,需要学习如何使用新的类和对象。这些类是Twisted的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。