首先,要明白不是所有的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(  )