105 assert len(self.server.predictions) == len(predictionValues) |
105 assert len(self.server.predictions) == len(predictionValues) |
106 self.server.logger.debug('Time needed: '+str(round(time()-self.startTime,2))) |
106 self.server.logger.debug('Time needed: '+str(round(time()-self.startTime,2))) |
107 |
107 |
108 # Output |
108 # Output |
109 predictionNames = [str(self.server.dicts.idNameDict[p]) for p in self.server.predictions[:numberOfPredictions]] |
109 predictionNames = [str(self.server.dicts.idNameDict[p]) for p in self.server.predictions[:numberOfPredictions]] |
110 predictionValues = [str(x) for x in predictionValues[:self.server.args.numberOfPredictions]] |
110 predictionValues = [str(x) for x in predictionValues[:numberOfPredictions]] |
111 predictionsStringList = ['%s=%s' % (predictionNames[i],predictionValues[i]) for i in range(len(predictionNames))] |
111 predictionsStringList = ['%s=%s' % (predictionNames[i],predictionValues[i]) for i in range(len(predictionNames))] |
112 predictionsString = string.join(predictionsStringList,' ') |
112 predictionsString = string.join(predictionsStringList,' ') |
113 outString = '%s: %s' % (name,predictionsString) |
113 outString = '%s: %s' % (name,predictionsString) |
114 self.request.sendall(outString) |
114 self.request.sendall(outString) |
115 |
115 |
116 def shutdown(self): |
116 def shutdown(self,saveModels=True): |
117 self.request.sendall('Shutting down server.') |
117 self.request.sendall('Shutting down server.') |
|
118 if saveModels: |
|
119 self.save() |
|
120 self.server.shutdown() |
|
121 |
|
122 def save(self): |
118 # Save Models |
123 # Save Models |
119 self.server.model.save(self.server.args.modelFile) |
124 self.server.model.save(self.server.args.modelFile) |
120 self.server.dicts.save(self.server.args.dictsFile) |
125 self.server.dicts.save(self.server.args.dictsFile) |
121 if not self.server.args.saveStats == None: |
126 if not self.server.args.saveStats == None: |
122 statsFile = os.path.join(self.server.args.outputDir,self.server.args.saveStats) |
127 statsFile = os.path.join(self.server.args.outputDir,self.server.args.saveStats) |
123 self.server.stats.save(statsFile) |
128 self.server.stats.save(statsFile) |
124 self.server.shutdown() |
|
125 |
129 |
126 def handle(self): |
130 def handle(self): |
127 # self.request is the TCP socket connected to the client |
131 # self.request is the TCP socket connected to the client |
128 self.data = self.request.recv(262144).strip() |
132 self.data = self.request.recv(4194304).strip() |
|
133 self.server.lock.acquire() |
129 #print "{} wrote:".format(self.client_address[0]) |
134 #print "{} wrote:".format(self.client_address[0]) |
130 #print self.data |
135 self.startTime = time() |
131 self.startTime = time() |
136 if self.data == 'shutdown': |
132 if self.data == 's': |
137 self.shutdown() |
133 self.shutdown() |
138 elif self.data == 'save': |
|
139 self.save() |
134 elif self.data.startswith('i'): |
140 elif self.data.startswith('i'): |
135 self.init(self.data[2:]) |
141 self.init(self.data[2:]) |
136 elif self.data.startswith('!'): |
142 elif self.data.startswith('!'): |
137 self.update() |
143 self.update() |
138 elif self.data.startswith('p'): |
144 elif self.data.startswith('p'): |
139 self.overwrite() |
145 self.overwrite() |
140 elif self.data.startswith('?'): |
146 elif self.data.startswith('?'): |
141 self.predict() |
147 self.predict() |
142 elif self.data == '': |
148 elif self.data == '': |
143 # Empty Socket |
149 # Empty Socket |
144 return |
150 pass |
145 elif self.data == 'avgStats': |
151 elif self.data == 'avgStats': |
146 self.request.sendall(self.server.stats.printAvg()) |
152 self.request.sendall(self.server.stats.printAvg()) |
147 else: |
153 else: |
148 self.request.sendall('Unspecified input format: \n%s',self.data) |
154 self.request.sendall('Unspecified input format: \n%s',self.data) |
149 self.server.callCounter += 1 |
155 self.server.callCounter += 1 |
150 |
156 self.server.lock.release() |
151 #returnString = 'Time needed: '+str(round(time()-self.startTime,2)) |
|
152 #print returnString |
|
153 |
157 |
154 if __name__ == "__main__": |
158 if __name__ == "__main__": |
155 HOST, PORT = "localhost", 9255 |
159 HOST, PORT = "localhost", 9255 |
156 #print 'Started Server' |
160 #print 'Started Server' |
157 # Create the server, binding to localhost on port 9999 |
161 # Create the server, binding to localhost on port 9999 |