研究了一下SocketServer模块,记录下每个类下函数的调用关系,加深了解
class BaseServer:
========================================================
+ __init__ (绑定server_address, RequestHandlerClass)
+ server_forever
+ handle_request
+ get_request (子类中具体实现)
+ verify_request
+ try: process_request
+ finish_request
+ RequestHandlerClass (实际处理方法)
+ close_request
+ except:
+ handle_error
+ close_request
class TCPServer(BaseServer):
========================================================
+ __init__
+ BaseServer.__init__
+ init socket
+ server_bind (socket bind)
+ server_activate (socket listen)
+ server_forever
+ handle_request
+ get_request (tcp: socket.accept)
+ ……
+ ……
class UDPServer(TCPServer):
========================================================
+ __init__
+ BaseServer.__init__
+ init socket
+ server_bind (socket bind)
+ server_activate (pass, do nothing)
+ server_forever
+ handle_request
+ get_request (udp: socket.recvfrom)
+ ……
+ ……
class ForkingMixIn:
========================================================
+ process_request (fork new process and release if not used)
+ ……
+ finish_request
+ RequestHandlerClass
+ ……
class ThreadingMixIn:
========================================================
+ process_request (create new thread and handle method)
+ ……
+ finish_request
+ RequestHandlerClass
+ ……
class BaseRequestHandler:
========================================================
+ __init__
+ setup
+ handle (实际处理的代码,需要自己实现)
+ finish
以上模块基于Python 2.5,背景色代码为子类中改写的函数
Python SocketServer 分析
最新推荐文章于 2025-03-10 13:11:34 发布