首先明白,Twisted 是基于事件驱动的

网络传数据转为方法上的调用,就像本地调用方法一样,服务器进行处理,将结果返回。像本地调用一样。

事件驱动编程是一种编程范式,这里程序的执行流由外部事件来决定。它的特点是包含一个事件循环,当外部事件发生时使用回调机制来触发相应的处理。另外两种常见的编程范式是(单线程)同步以及多线程编程。事件驱动是异步的类型的,能最大程度的利用系统性能。

python服务器接口收到的中文url乱码_reactor


在单线程同步模型中,任务按照顺序执行。如果某个任务因为I/O而阻塞,其他所有的任务都必须等待,直到它完成之后它们才能依次执行。这种明确的执行顺序和串行化处理的行为是很容易推断得出的。如果任务之间并没有互相依赖的关系,但仍然需要互相等待的话这就使得程序不必要的降低了运行速度。

在多线程版本中,这3个任务分别在独立的线程中执行。这些线程由操作系统来管理,在多处理器系统上可以并行处理,或者在单处理器系统上交错执行。这使得当某个线程阻塞在某个资源的同时其他线程得以继续执行。与完成类似功能的同步程序相比,这种方式更有效率,但程序员必须写代码来保护共享资源,防止其被多个线程同时访问。多线程程序更加难以推断,因为这类程序不得不通过线程同步机制如锁、可重入函数、线程局部存储或者其他机制来处理线程安全问题,如果实现不当就会导致出现微妙且令人痛不欲生的bug。

在事件驱动版本的程序中,3个任务交错执行,但仍然在一个单独的线程控制中。当处理I/O或者其他昂贵的操作时,注册一个回调到事件循环中,然后当I/O操作完成时继续执行。回调描述了该如何处理某个事件。事件循环轮询所有的事件,当事件到来时将它们分配给等待处理事件的回调函数。这种方式让程序尽可能的得以执行而不需要用到额外的线程。事件驱动型程序比多线程程序更容易推断出行为,因为程序员不需要关心线程安全问题。

当以下的条件成立的时候,额可以考虑用Twisted 模型

  1. 程序中有许多任务,而且…
  2. 任务之间高度独立(因此它们不需要互相通信,或者等待彼此)而且…
  3. 在等待事件到来时,某些任务会阻塞。

Twisted实现了设计模式中的反应堆(reactor)模式,这种模式在单线程环境中调度多个事件源产生的事件到它们各自的事件处理例程中去。

Twisted的核心就是reactor事件循环。Reactor可以感知网络、文件系统以及定时器事件。它等待然后处理这些事件,从特定于平台的行为中抽象出来,并提供统一的接口,使得在网络协议栈的任何位置对事件做出响应都变得简单。

http://blog.sina.com.cn/s/blog_704b6af70100py9n.html


——————————————————————————————————————————————————————————————

选择安装的python版本是2.7 (在2012年2月11日,最新的 Twisted 也只支持到 Python 2.7 (Twisted 11.0.0 for Python 2.7)的,我尝试过安装Python 3.2,再安装 Twisted 11.0.0 for Python 2.7 是失败的,OS是Windows 2003 Server。

步骤1:下载Twisted

http://twistedmatrix.com/trac/wiki/Downloads

当前版本是Twisted 11.0.0 for Python 2.7

 

步骤2:安装Twisted

Twisted-11.1.0.win32-py2.7.msi直接运行即可

这时候,运行IDLE,输入from twisted.internet import reactor,提示不可用。需要装zope.interface模块

 

步骤3:下载zope

http://pypi.python.org/pypi/zope.interface#downloads

当前版本是zope.interface-3.8.0-py2.7-win32.egg 
(我所下载的文件是:zope.interface-3.8.0-py2.7-win32.zip,解压后的文件夹是:zope.interface-3.8.0-py2.7-win32, 需

要将文件夹改名字为:zope.interface-3.8.0-py2.7-win32.egg)

 

步骤4:安装zope

http://pypi.python.org/pypi/setuptools

先下载setuptools-0.6c11.win32-py2.7.exe, 安装setup tools

这是C:\Python27\Scripts下会有一些与easy_install相关的文件。

将zope.interface-3.8.0-py2.7-win32.egg放到 C:\Python27\Scripts目录下,

在命令行中运行:

C:\>cd Python27\Scripts
 C:\Python27\Scripts>easy_install.exe zope.interface-3.8.0-py2.7-win32.egg

现在再进入IDLE,输入from twisted.internet import reactor,通过!