首先,要明白不是所有的socket服务都需要高性能。如果要求高性能,使用IOCP或EPoll模式用C/C++来完成,直接用API写,用ACE的proactor封装来完成是比较恰当的行为。但当性能不是主要问题时,用Python来写socket服务,并享受高的开发效率将是一件快乐的事。下面,是用python完成的一个每thread/connect的一个echo服务。

     经常的,在写一段Python代码时,我会先打开《Python Cookbook》(O'Reilly)一书,看看有没有所需要的(这也是保证效率的一种方式),下面的代码就是摘自此书。

1 import SocketServer
2 class MyHandler(SocketServer.BaseRequestHandler):
3     def handle(self):
4         while 1:
5             dataReceived = self.request.recv(1024)
6             if not dataReceived: break
7             self.request.send(dataReceived)
8 myServer = SocketServer.ThreadingTCPServer(('',8881), MyHandler)
9 myServer.serve_forever(  )