def new_task(model, args): task = Task({'model': model, 'arguments': args, 'status': 'PENDING'}) store.set('task:{id}'.format(id=task.id), json.dumps(task.to_primitive())) store.set('task:{id}:status'.format(id=task.id), task.status) store.lpush('task:all', task.id) return task
def get_task(task_id): try: task_data = json.loads(store.get(store.scan_iter('task:{id}'.format(id=task_id)).next())) model_data = task_data.pop('model') task = Task(task_data) task.model = get_model(model_data.get('name')) task.status = get_task_status(task_data.get('id')) return task if task else None except StopIteration: return None