文章标签 ‘python’

概述 urllib2中的核心类: Request :一个具体的url请求,包含了请求的所有信息,不仅仅试用于http协议 OpenerDirector:与BaseHandler组合,通过组合不同得handler处理不同的请求 BaseHandler :参与完成请求处理的类,不同的请求处理都继承这个类 在urllib2中,一次请求被分为三个过程,分别是request,open,response request:目的在于构造本次请求Request对象所需得所有信息,如http协议中的header信息 open:处理具体请求的过程,封装Request对象,调用更底层的类完成请求并返回response response:对返回的Response对象做处理 当然后有一个error处理的过程,但这个不是主动触发的。 OpenerDirector 因为每次请求的具体实现是不同的handler,而且一次请求可能由很多handler组成。所以实现这一耦合机制的类就是OpenerDirector,这个类可以注册(添加)各种不同的handler用来帮助处理一次请求。通常来说handler中的命名规则为 protocol_request|open|response,这分别对应不同协议的三个过程。还是直接上代码,写了一点中文的注释。 class OpenerDirector: def __init__(self): # manage the individual handlers # 所有已注册的handler self.handlers = [] # 已注册的不同过程的方法 self.handle_open = {} self.handle_error = {} self.process_response = {} self.process_request = {} # 添加一个handler # def add_handler(self, handler): # 通过检测BaseHandler中的方法 确保handler继承于BaseHandler if not hasattr(handler, […]

2010年11月20日16:59 | 6 条评论
分类: 兴趣所在
标签:

尝试了mod_python和mod_wsgi两种配置方法 mod_python方式 到http://httpd.apache.org/modules/python-download.cgi下载源码包,apache 2.X使用mod_python3.3版本,使用DSO的方式编译成可加载的模块 ./configure –with-apxs=/usr/local/www/bin/apxs make sudo make install 注1:如果环境变量里面没有python的运行环境还需要指定–with-python参数。 注2:编译可能会出现错误,我用的是apache2.214和python2.4编译出现connobject.c:142: error: request for member ‘next’ in something not a structure or union。google到已经人报告这个bug,把connobject.c 142行“!(b == APR_BRIGADE_SENTINEL(b) ||”改为 “!(b == APR_BRIGADE_SENTINEL(bb) ||” 之后再httpd.conf中把编译好的so加载进来。然后在配置文件中添加站点的配置 ,具体可以参见mod_python的文档http://www.modpython.org/live/current/doc-html/directives.html SetHandler python-program PythonPath “[‘/path/to/site/parent’] + sys.path” PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonDebug On 注1:这里用的是Django中的mod_python 注2:如果站点所在文件夹不在系统环境变量中需用PythonPath添加 mod_wsgi方式 这种方式完全遵循wsgi协议,虽然现在我还对wsgi没有很深刻的了解,模块应该是让apache实现了协议的接口。 在http://code.google.com/p/modwsgi/downloads/list下载源码,与mod_python一样编译成so并在http.conf中加载 配置文档参考 http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives 有关Django的配置参考http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango http.conf中 […]

2010年7月1日20:37 | 没有评论
分类: 兴趣所在
标签: , ,