一、特性
每次连接fork一个进程,为客户提供服务,具有多进程、阻塞I/O、擅长长连接、利用多核特性、顺序执行等特性。
适合场景:
1. 连接数不大
2. 计算响应的工作量远大于fork()的开销
3. 需要长连接
二、Python实现
from SocketServer import BaseRequestHandler
from SocketServer import ForkingTCPServer
class EchoHandler(BaseRequestHandler):
def handle(self):
print("got connect from ", self.client_address)
while True:
data = self.request.recv(4096)
if data:
sent = self.request.send(data)
else:
print("disconnect ", slef.client_address)
self.request.close()
brreak
if __name__ == "__main__":
listen_addr = ("127.0.0.1", 2021)
server = ForkingTCPServer(listen_addr, EchoHandler)
server.serve_forever()