1.1 --- a/server.py Sun Jun 13 01:53:58 2010 +0200
1.2 +++ b/server.py Sun Jun 13 04:34:03 2010 +0200
1.3 @@ -1,7 +1,9 @@
1.4 #!/usr/bin/python
1.5
1.6 import com
1.7 +import worker
1.8 import optparse
1.9 +import subprocess
1.10 import SocketServer
1.11
1.12 option_list = [
1.13 @@ -20,26 +22,39 @@
1.14 if key in data:
1.15 args = data.partition(key)[2].split()
1.16 if args:
1.17 - value[0](socket, self.client_address, args)
1.18 + value[0](socket, self.client_address, self.worker, args)
1.19 else:
1.20 - value[0](socket, self.client_address)
1.21 + value[0](socket, self.client_address, self.worker)
1.22
1.23 class Server(SocketServer.UDPServer):
1.24 - def __init__(self, host, port, handler, options):
1.25 + def __init__(self, host, port, handler, options, worker):
1.26 SocketServer.UDPServer.__init__(self, (host, port), handler)
1.27 self.host = host
1.28 self.port = port
1.29 self.handler = handler
1.30 self.options = options
1.31 + self.handler.worker = worker
1.32 def run(self):
1.33 self.serve_forever()
1.34 -
1.35 +
1.36 +def spawnWorker(server, n):
1.37 + port = server[1] + 1
1.38 + worker_list = []
1.39 + for i in xrange(n):
1.40 + #worker.spawn(server[0], port + i)
1.41 + subprocess.Popen(["python worker.py", str(port + i)], shell=True)
1.42 + worker_list.append((server[0], port + i))
1.43 + return worker_list
1.44 +
1.45 if __name__ == "__main__":
1.46 - parser = optparse.OptionParser(usage="usage: %prog [options] port",
1.47 + parser = optparse.OptionParser(usage="usage: %prog [options] port worker",
1.48 option_list=option_list)
1.49 options, args = parser.parse_args()
1.50
1.51 if len(args) > 0:
1.52 + host = "localhost"
1.53 port = int(args[0])
1.54 - server = Server("localhost", port, Handler, options)
1.55 + worker_count = int(args[1])
1.56 + worker = spawnWorker((host, port), worker_count)
1.57 + server = Server(host, port, Handler, options, worker)
1.58 server.run()