python Gevent multiprocessing server,,import sysfr


import sysfrom gevent import serverfrom gevent.baseserver import _tcp_listenerfrom gevent.monkey import patch_all; patch_all()from multiprocessing import Process, current_process, cpu_countdef note(format, *args):    sys.stderr.write('[%s]\t%s\n' % (current_process().name, format%args))def echo(socket, address):    print 'New connection from %s:%s' % address    fileobj = socket.makefile()    fileobj.write('Welcome to the echo server! Type quit to exit.\r\n')    fileobj.write('In %s\r\n' % current_process().name)    fileobj.flush()    while True:        line = fileobj.readline()        if not line:            print "client disconnected"            break        if line.strip().lower() == 'quit':            print "client quit"            break        fileobj.write(current_process().name + '\t' + line)        fileobj.flush()        print "echoed", repr(line)listener = _tcp_listener(('127.0.0.1', 8001)) def serve_forever(listener):    note('starting server')    server.StreamServer(listener, echo).serve_forever()number_of_processes = 5print 'Starting %s processes' % number_of_processesfor i in range(number_of_processes):    Process(target=serve_forever, args=(listener,)).start()serve_forever(listener)

评论关闭