转:
Prefork 就是预先创建好制定数量的进程来接受请求
t json
import struct
import socket
def handle_conn(conn, addr, handlers):
print addr, "comes"
while True:
length_prefix = conn.recv(4)
if not length_prefix:
print addr, "bye"
conn.close()
break # 关闭连接,继续处理下一个连接
length, = struct.unpack("I", length_prefix)
body = conn.recv(length)
request = json.loads(body)
in_ = request['in']
params = request['params']
print in_, params
handler = handlers[in_]
handler(conn, params)
def loop(sock, handlers):
while True:
conn, addr = sock.accept()
handle_conn(conn, addr, handlers)
def ping(conn, params):
send_result(conn, "pong", params)
def send_result(conn, out, result):
response = json.dumps({"out": out, "result": result})
length_prefix = struct.pack("I", len(response))
conn.send(length_prefix)
conn.sendall(response)
def prefork(n):
for i in range(n):
pid = os.fork()
if pid < 0: # fo...
https://juejin.im
掘金 — 一个帮助开发者成长的社区