worker.py
author Eugen Sawin <sawine@me73.com>
Mon, 14 Jun 2010 23:16:47 +0200
changeset 4 4cee17e91d29
parent 3 234fa7eea0df
child 5 5ab3cc2e7851
permissions -rw-r--r--
Added worker result feedback.
     1 #!/usr/bin/python
     2 
     3 import com
     4 import model
     5 import optparse
     6 import pickle
     7 import SocketServer
     8 
     9 option_list = [
    10 	optparse.make_option("-q", "--quiet", action="store_true", dest="quiet", 
    11 		help="quiet mode", default=False)]
    12 
    13 def spawn(host, port):
    14 	return Worker(host, port, Handler, ())
    15 		
    16 class Handler(SocketServer.BaseRequestHandler):
    17 	"""
    18 	"""	
    19 	def handle(self):
    20 		data = self.request[0].strip()
    21 		socket = self.request[1]
    22 		model_size = int(data[:10])
    23 		model = pickle.loads(data[10:10+model_size])
    24 		max_iter = int(data[10+model_size:20+model_size])
    25 		model.update(max_iter)
    26 		for cell in model.cells.iteritems():
    27 			socket.sendto(pickle.dumps(cell), self.client_address)
    28 		
    29 class Worker(SocketServer.UDPServer):
    30 	def __init__(self, host, port, handler, options):
    31 		SocketServer.UDPServer.__init__(self, (host, port), handler)
    32 		self.host = host
    33 		self.port = port
    34 		self.handler = handler
    35 		self.options = options
    36 	def run(self):
    37 		print "worker running at port %s" % self.port
    38 		self.serve_forever()
    39 
    40 if __name__ == "__main__":
    41 	parser = optparse.OptionParser(usage="usage: %prog [options] port",
    42 		option_list=option_list)
    43 	options, args = parser.parse_args()
    44 	
    45 	if len(args) > 0:
    46 		port = int(args[0])
    47 		worker = Worker("localhost", port, Handler, options)
    48 		worker.run()