def post(self): self.response.headers.add_header('Content-Type', 'application/json') r = {'status': 'OK'} try: data = json.loads(self.request.body) channel = data['sub_data']['channel'] name = data['sub_data'].get('taskname') if not name: name = data['pub_data'].get(data['sub_data'].get('pubname')) r['id'] = TaskQueue.add (channel, name, data) except Exception, e: r['status'] = 'ERR' r['message'] = str(e)
def testall(self): queue = TaskQueue() id = queue.add (channel='C', name='N', content=dict(xxx=123)) self.assertIsNotNone(id) lease = queue.lease (channel='C') self.assertIsNotNone(lease) self.assertEqual(lease['id'], id) self.assertEqual(lease['name'], 'N') self.assertEqual(lease['channel'], 'C') lease = queue.lease (channel='C') self.assertIsNone(lease) lease = queue.lease (channel='NOT FOUND') self.assertIsNone(lease) queue.add (channel='C', name='N1', content=dict(xxx=123)) queue.add (channel='C', name='N2', content=dict(xxx=123)) lease = queue.lease (channel='C') self.assertTrue(queue.delete (lease, 'DONE')) self.assertFalse(queue.delete (lease, 'DONE')) lease = queue.lease (channel='C') self.assertTrue(queue.delete (lease, 'DONE')) lease = queue.lease (channel='C') self.assertIsNone(lease)
def add(self, request): """Add a task to the queue Args: request: an AddTaskRequest Returns: An AddTaskResponse. status=='OK' on success. Any other value indicates failure and the task is not added """ response = AddTaskResponse(status = 'OK') try: EndpointsHelper.authenticate() id = TaskQueue.add(request.channel, request.name, request.content) #TODO: Maybe we should return the task id? except Exception, err: response.status=str(err)
def testretry(self): queue = TaskQueue() id = queue.add (channel='RERTY_TEST', name='N', content=dict(xxx=123)) self.assertIsNotNone(id) lease = queue.lease (channel='RERTY_TEST', lease_seconds=1) self.assertEqual(id, lease['id']) self.assertEqual(lease['retry_count'], 1) time.sleep(1) lease = queue.lease (channel='RERTY_TEST', lease_seconds=1) self.assertEqual(id, lease['id']) self.assertEqual(lease['retry_count'], 2) time.sleep(1) lease = queue.lease (channel='RERTY_TEST', lease_seconds=1) self.assertEqual(id, lease['id']) self.assertEqual(lease['retry_count'], 3) time.sleep(1) lease = queue.lease (channel='RERTY_TEST', lease_seconds=1) self.assertIsNone(lease)