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@2
|
26 |
|
sawine@2
|
27 |
class Worker(SocketServer.UDPServer):
|
sawine@2
|
28 |
def __init__(self, host, port, handler, options):
|
sawine@2
|
29 |
SocketServer.UDPServer.__init__(self, (host, port), handler)
|
sawine@2
|
30 |
self.host = host
|
sawine@2
|
31 |
self.port = port
|
sawine@2
|
32 |
self.handler = handler
|
sawine@2
|
33 |
self.options = options
|
sawine@2
|
34 |
def run(self):
|
sawine@2
|
35 |
print "worker running at port %s" % self.port
|
sawine@2
|
36 |
self.serve_forever()
|
sawine@2
|
37 |
|
sawine@2
|
38 |
if __name__ == "__main__":
|
sawine@2
|
39 |
parser = optparse.OptionParser(usage="usage: %prog [options] port",
|
sawine@2
|
40 |
option_list=option_list)
|
sawine@2
|
41 |
options, args = parser.parse_args()
|
sawine@2
|
42 |
|
sawine@2
|
43 |
if len(args) > 0:
|
sawine@2
|
44 |
port = int(args[0])
|
sawine@2
|
45 |
worker = Worker("localhost", port, Handler, options)
|
sawine@2
|
46 |
worker.run()
|