コード例 #1
0
class UIDClientHandler(threading.Thread):
	def __init__(self, clientsocket):
		super(UIDClientHandler, self).__init__()
		self.clientsocket = clientsocket
		self.ass = Backend()

	def generate_response(self, request):
		"""
		Use the servers stored data to respond to a client
		Returns the appropriate response
		"""
		global uids
		resp = {}
		liked = request["liked"]
		disliked = request["disliked"]

		images = self.ass.get_recommendations(liked, disliked)
		print "REC:  {}".format(images)
		resp["type"] = "OK"
		resp["recommendations"] = images
		# resp["type"] = "ERROR"
		# resp["body"] = "Exception while handling request"
		return resp

	def run(self):
		"""
		Client handling Thread
		"""
		print "Connected to {}".format(self.clientsocket.getpeername())
		while True:
			try:
				reqstr = self.clientsocket.recvln()
				if not reqstr:
					return
				req = json.loads(base64.b64decode(reqstr))
				print "REQ: {}".format(req)
				resp = self.generate_response(req)
				print "RESP: {}".format(resp)
				respstr = base64.b64encode(json.dumps(resp))
				self.clientsocket.sendln(respstr)
			except socket.error:
				return