def post(self): self.response.headers['Access-Control-Allow-Origin'] = '*' self.response.headers['Access-Control-Allow-Method'] = 'POST' self.response.headers['Access-Control-Allow-Headers'] = 'Content-Type' self.response.headers['Access-Control-Allow-Content-Type'] = 'application/json' group = self.request.get('group') intoken = self.request.get('token') ns = self.request.get('namespace') if ns != "": namespace_manager.set(ns) tokens = memcache.get(group) try: body = self.request.body for token in tokens: if token != intoken: #message = json.loads(body); #if token.startswith("PULL_"): self.addMessage(token,body,group) # task queues may be used here but they tend to eat up quota # #q = taskqueue.Queue('pull-queue') #tasks = [] #payload_str = json.dumps(message) #tasks.append(taskqueue.Task(payload=payload_str, method='PULL',tag=token)) #q.add(tasks) #else: # channel.send_message(token,json.dumps(message)) except Exception, inst: self.response.write(inst) self.response.write(" " + body)
def get(self): self.response.headers['Access-Control-Allow-Origin'] = '*' self.response.headers['Access-Control-Allow-Method'] = 'OPTIONS,POST,GET' self.response.headers['Access-Control-Allow-Headers'] = 'Content-Type' self.response.headers['Access-Control-Allow-Content-Type'] = 'application/json' import time clientid = self.request.get('client') try: ns = self.request.get('namespace') if ns != "": namespace_manager.set(ns) # task queues may be used here but they tend to eat up quota # #q = taskqueue.Queue('pull-queue') #tasks = q.lease_tasks_by_tag(100000,100,tag=clientid,deadline=30) #result = [] #for task in tasks: # result.append(json.loads(task.payload)) # q.delete_tasks(task) MAX_TRIES = 30 tries = 0 result = [] while tries < MAX_TRIES: messages = self.getMessages(clientid) result = [] if messages is not None: for message in messages: result.append(json.loads(message['message'])) if len(result) == 0: tries += 1 time.sleep(1) else: break self.response.headers['Content-Type'] = 'application/json' if self.request.get('callback') != '': self.response.write(self.request.get('callback') + "(" + json.dumps({"messages":result}) + ")"); else: json.dump({"messages":result},self.response.out) except Exception, inst: self.response.write(inst)
def get(self): self.response.headers['Access-Control-Allow-Origin'] = '*' self.response.headers['Access-Control-Allow-Method'] = 'OPTIONS,POST,GET' self.response.headers['Access-Control-Allow-Headers'] = 'Content-Type' self.response.headers['Access-Control-Allow-Content-Type'] = 'application/json' clientid = self.request.get('client') group = self.request.get('group') ns = self.request.get('namespace') if ns != "": namespace_manager.set(ns) #if clientid.startswith("PULL_"): token = clientid #else: # token = channel.create_channel(clientid) if not self.addClient(token,group): token = "" self.response.headers['Content-Type'] = 'application/json' if self.request.get('callback') != '': self.response.write(self.request.get('callback') + "(" + json.dumps({"token":token}) + ")"); else: json.dump({"token":token},self.response.out)