本文会简述该库的代码组织架构,会着重介绍它实现的连接池ConnectPool以及如何实现的线程、进程安全。
阅读全文用来生成函数调用图,这个工具可能名气比较大。因为看介绍就能看到好像可以生成比较帅气的图像。从源码层面看。其实这个工具是相当简单的,就是使用了sys.settrace接口,该接口常用于debug、profile(本文环境python3.5.1)。
阅读全文 _ _ _ ____ ____ _ ____ ____ ____ _ _ _ _ _ ____ ____ _ ___
| | | [__ | __ | |__/ |___ |___ | |\ | |__| |___ |__/ | |
|_|_| ___] |__] | | \ |___ | | | \| | | |___ | \ | |
+--------------------------+ +---------------------------------+
| wsgiref.WSGIServer | | wsgiref.WSGIRequestHandler |
+--------------------------+ +---------------------------------+
|
+-------------v------------+ +------------------------------------+
| http.server.HTTPServer | | http.server.BaseHTTPRequestHandler |
+--------------------------+ +------------------------------------+
+--------------------------+ +------------------------------------+
| socketserver.TCPServer | | socketserver.StreamRequestHandler |
+--------------------------+ +------------------------------------+
overload handle logic
Created with Monodraw
dd
上一章讲SocketServer模块,它将服务端根据监听套接字和连接套接字分为了2个部分(BaseServer/BaseRequestHandler),而连接套接字类的处理方法相当简单,最终是一个handle函数就搞定了。http.server这个模块主要类BaseHTTPRequestHandle继承自BaseRequestHandle,对handle进行了一点点的加强,主要就是对http协议进行了简单的解析工作(源码版本Python3.5)
阅读全文SocketServer.py这个文件700来行,除去注释大概300来行左右,据网友称该模块实乃学习类继承之典范。
要理解这个模块真的非常的简单,也让人体会到同步编程的简单性。另外我现在比较关注web编程,所以会比较关注tcp部分忽略掉udp(源码版本Python2.7.11)
asyncore为select.select、poll的封装(实际上现在大家都使用更为高效的epoll),变成了框架的使用模式,该库已经作为兼容模式存在,新的库为asyncio。且在2和3中asyncore代码有一点点差异。(源码版本2.7.11)
阅读全文