You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fastapi_celery/project/celery_utils.py

36 lines
784 B
Python

import typing
from celery import current_app as celery_current_app
from celery.result import AsyncResult
from project.config import settings
TaskInfoResponse = typing.Dict[str, str]
def create_celery():
"""Clerey factory function."""
celery_app = celery_current_app
celery_app.config_from_object(settings, namespace="CELERY")
return celery_app
def get_task_info(task_id: str) -> TaskInfoResponse:
"""
return task info according to the task_id
"""
task = AsyncResult(task_id)
state = task.state
if state == "FAILURE":
error = str(task.result)
response = {
"state": task.state,
"error": error,
}
else:
response = {
"state": task.state,
}
return response