Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)