首页 > 编程语言 > 详细

Python SocketServer源码分析

时间:2014-03-01 00:50:01      阅读:566      评论:0      收藏:0      [点我收藏+]

BaseSever:
提供基础的循环等待请求的处理框架。使用serve_forever启动服务,使用shutdown停止。同时提供了一些可自行扩展的方法,用于对不同类型的请求做自己想要的处理。

TCPServer:
在BaseServer基础上增加了一个TCP的socket连接,使用server_bind、server_activate、server_close处理TCP启停等操作
同时增加了get_request、shutdown_request、close_request处理客户端请求。

UDPServer:
在BaseServer基础上增加了一个UDP的socket连接,由于UDP不需要监听,因此只有get_request、shutdown_request、close_request等来处理客户端请求

ForkingMixIn:
提供了process_request方法,每一个请求开启一个新进程来处理

ThreadingMixIn:
提供了process_request方法,每一个请求开启一个新线程来处理

说明:
XXXMixIn专门提供process_request,用来覆盖XXXServer的默认的process_request。(MinIn类,可以看做一个设计模式?有点AOP的味道)
使用方法是,同时继承XXXMinIn和XXXServer,例如标准库的:
class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass
一个细节:XXXMixIn一点要写在左侧,XXXServer要写在右侧,这样XXXMinIn里面的process_request方法才会覆盖XXXServer的process_request方法。
这个是由python的MRO决定的。

RequestHandlerClass
XXXServer在处理request时会调用RequestHandlerClass
self.RequestHandlerClass(request, client_address, self)
因此可以定义各种RequestHandlerClass,来实现对请求的处理。(组合。另一个设计模式?)

Python SocketServer源码分析,布布扣,bubuko.com

Python SocketServer源码分析

原文:http://www.cnblogs.com/tuzkee/p/3573210.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!