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