如何处理并发客户端请求



这是python中使用zeroMQ的请求/响应模式的示例代码。我想知道是否有办法同时处理来自多个客户端的请求?

import zmq 
import time 
def main():
    context = zmq.Context()
    serverSocket = StartServer(context,"9999")
    processRequests(serverSocket)
def processRequests (socket):
    while True:
        print "waiting for request"
        msg = socket.recv()
        print msg
        time.sleep(10)
        socket.send("Request processed")

def StartServer(context, port):
    socket = context.socket(zmq.REP)
    socket.bind("tcp://*:%s" % port)
    print "started server on", port 
    return socket 


if __name__ == '__main__':
    print "starting IPC server"
    main()

REQ-REP 模式是一种同步模式。 如果有两个 REQ 套接字连接到同一 REP 套接字,则 REP 套接字将串行处理请求。

如果你想做异步的请求-回复,你需要研究路由器-经销商模式,这是REQ-REP的通用类似物。

如果需要中转异步请求-应答,请查看此处的"图 16 - 扩展请求-应答"部分。

最新更新