python的SocketServer模块提供了一个开发socket server的捷径。但是其自带的异步handler ThreadingMixIn每次处理请求是都会产生一个新的线程,在负载较重的时候会有一些问题。需要一个使用线程池的TCPServer.
具体的代码如下:
继承自TCPServer和object。
继承object的原因是需要使用super调用父类的方法,需要使用new style的类。
process_request方法在有请求到来的时候被调用。
它将request和客户端地址放到一个队列里。
配合一个RequestHandler,就可以轻松的实现一个线程池版的TCPServer