diff -r 0ebb73fd094a -r b887ce19c300 server.py --- a/server.py Sun Jun 13 01:53:58 2010 +0200 +++ b/server.py Sun Jun 13 04:34:03 2010 +0200 @@ -1,7 +1,9 @@ #!/usr/bin/python import com +import worker import optparse +import subprocess import SocketServer option_list = [ @@ -20,26 +22,39 @@ if key in data: args = data.partition(key)[2].split() if args: - value[0](socket, self.client_address, args) + value[0](socket, self.client_address, self.worker, args) else: - value[0](socket, self.client_address) + value[0](socket, self.client_address, self.worker) class Server(SocketServer.UDPServer): - def __init__(self, host, port, handler, options): + def __init__(self, host, port, handler, options, worker): SocketServer.UDPServer.__init__(self, (host, port), handler) self.host = host self.port = port self.handler = handler self.options = options + self.handler.worker = worker def run(self): self.serve_forever() - + +def spawnWorker(server, n): + port = server[1] + 1 + worker_list = [] + for i in xrange(n): + #worker.spawn(server[0], port + i) + subprocess.Popen(["python worker.py", str(port + i)], shell=True) + worker_list.append((server[0], port + i)) + return worker_list + if __name__ == "__main__": - parser = optparse.OptionParser(usage="usage: %prog [options] port", + parser = optparse.OptionParser(usage="usage: %prog [options] port worker", option_list=option_list) options, args = parser.parse_args() if len(args) > 0: + host = "localhost" port = int(args[0]) - server = Server("localhost", port, Handler, options) + worker_count = int(args[1]) + worker = spawnWorker((host, port), worker_count) + server = Server(host, port, Handler, options, worker) server.run()