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()
Exemple #3
0
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
Exemple #4
0
    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
Exemple #5
0
    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
Exemple #6
0
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"