def test_get_task_result_by_id( clean_before_and_after, multiple_task_results_entries, task_results ): assert TaskResultModel.get_by_id("ab1").jobs == task_results[0].get("jobs") assert TaskResultModel.get_by_id("ab1").event == task_results[0].get("event") assert TaskResultModel.get_by_id("ab2").jobs == task_results[1].get("jobs") assert TaskResultModel.get_by_id("ab2").event == task_results[1].get("event")
def multiple_task_results_entries(task_results): with get_sa_session() as session: session.query(TaskResultModel).delete() yield [ TaskResultModel.add_task_result(task_id="ab1", task_result_dict=task_results[0]), TaskResultModel.add_task_result(task_id="ab2", task_result_dict=task_results[1]), ] clean_db()
def process_message(self, event: dict, topic: str = None, source: str = None) -> Optional[dict]: """ Base celery task for processing messages. :param event: event data :param topic: event topic :param source: event source :return: dictionary containing task results """ task_results: dict = SteveJobs().process_message(event=event, topic=topic, source=source) if task_results: TaskResultModel.add_task_result(task_id=self.request.id, task_result_dict=task_results) return task_results
def get(self, id: str): """A specific Celery task details""" task = TaskResultModel.get_by_id(id) if not task: return "", HTTPStatus.NO_CONTENT data = task.to_dict() data["event"] = Event.ts2str(data["event"]) return data
def get(self): """ List all Celery tasks / jobs """ first, last = indices() tasks = [] for task in islice(TaskResultModel.get_all(), first, last): data = task.to_dict() data["event"] = Event.ts2str(data["event"]) tasks.append(data) resp = make_response(dumps(tasks), HTTPStatus.PARTIAL_CONTENT) resp.headers["Content-Range"] = f"tasks {first+1}-{last}/{len(tasks)}" resp.headers["Content-Type"] = "application/json" return resp
def process_message(self, event: dict, topic: str = None) -> Optional[dict]: task_results: dict = SteveJobs().process_message(event=event, topic=topic) if task_results: TaskResultModel.add_task_result(task_id=self.request.id, task_result_dict=task_results) return task_results
def test_get_task_results(clean_before_and_after, multiple_task_results_entries): results = TaskResultModel.get_all() assert len(results) == 2 assert results[0].task_id == "ab1" assert results[1].task_id == "ab2"