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