server.py
changeset 2 b887ce19c300
parent 0 a99535269d60
child 3 234fa7eea0df
     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()