易截截图软件、单文件、免安装、纯绿色、仅160KB

Python中reactor,factory,protocol的学习笔记


Python中reactor,factory,protocol的学习笔记
 
 
最为简单的情况下,除了了解清reactor的简单使用,你还要了解Protocol和Factory。它们最终都会由reactor的侦听建立和run来统一调度起来。    
   
     建立服务器的第一个要解决的问题就是服务与外界的交流协议。协议的定义在twisted中是通过继承twisted.internet.protocol.Protocol类来实现的。在协议中你可以定义连接、数据接收、断开连接等一系列的事件如果进行响应。但是对于所有连接上来的协议的建立、持久配置数据的存储这样的内容并不会保存在协议中。    
   
  持久配置数据的存储通常都会保存在工厂里。    
   
     工厂的定义在twisted中是通过继承twisted.internet.protocol.Factory类来实现的。twisted提供了缺省的工厂实现最为普通的需求。它会实例化每个协议,并且通过设置每个协议中factory属性来使协议可以使用到它自己,做这个设置的作用就是让协议在进行处理连接数据时可以使用到工厂中存储的持久配置数据。工厂的启动是需要reactor真实的建立侦听并启动才可以实现的。    
   
    reactor侦听的建立可以参考   twisted.internet.interfaces.IReactorTCP.listenTCP。这时我们先只说建立TCP服务器的侦听,如果你需要其它种类的侦听建立参考IReactor*.listen*系列API。    
   
  总结一下,我们书写一个twisted的Daemon,实质上会关注三个层次的对象。它们互相可配置,可独立开发,只需要通过简单的调用配置就可结合使用。第一层次就是侦听的建立、工厂的初始化、服务器的运行,它需要reactor的开发。第二个层次就是服务的初始化、用户连接的建立、持久配置数据的存储、协议的实例化,它需要factory的开发。第三个层次就是用户连接建立后的事件处理,这就需要protocol的开发了。    
-------------------------------------------------------------------------------------------------------------------------
上面是引用别人的话,下面是自己的学习:
 
一、
protocol:内部实现的主要是连接在通信时的动作;
         内部有transport,可进行write(), getpeer()(host,port)
 &


相关文档:

python的异常Exception


Python 的异常处理机制
Python代码 
 try:    
  raise Exception("a", "b")    
    except Exception,e:    
  print e    
    finally:    
  print "final"    
('a', ......

安装Memcached For Win32 和 Memcached Python Client

    Memcached
是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。
    网上有很多讲到Memcached For Linux的安装教程,但是Memcached For Win32 and Python的就甚少,偶尔google找到一篇
比较相近的英文教程,觉得 ......

python绘制螺旋线

#coding=utf-8
from math import sqrt,cos,sin
import Image, ImageDraw
class SpireShape(object):
    def __init__(self, draw):
        self.draw = draw
        self.line_width = 1
     & ......

Python之美 Decorator深入详解(一)

There should be one—--and preferably only one –--obvious way to do it.
                                     ......

Python 中的字符编码

1、str类型可以理解为一个二进制block,或multibyte
2、multibyte_str.decode("<multibyte_encode_method>")  -> unicode
3、unicode_str.encode("<multibyte_encode_method>")  -> multibyte_str(binary block)
4、unicode_str 的操作参数也应为unicode,如:unicode_str.find("样本".deco ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号