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