Using Celery and Flower for Background Tasks in FastAPI

Posted by

FastAPI – Background Tasks con Celery e Flower

FastAPI – Background Tasks con Celery e Flower

FastAPI es un marco de desarrollo web rápido (high-performance) para crear APIs en Python. Con la capacidad de manejar un gran número de solicitudes por segundo, es una excelente opción para aplicaciones que requieren una alta eficiencia y rendimiento. En este artículo, revisaremos cómo podemos utilizar background tasks en FastAPI con Celery y Flower.

Background Tasks

Las background tasks son tareas que se ejecutan en segundo plano sin interferir con la respuesta de la solicitud principal. Estas tareas son útiles para procesos que pueden tomar mucho tiempo y no necesitan una respuesta inmediata. En FastAPI, podemos definir y ejecutar tareas en segundo plano utilizando la biblioteca Celery.

Instalación de Celery y Flower

Para comenzar, necesitamos instalar Celery y Flower. Puedes hacerlo utilizando el siguiente comando:

pip install celery flower

Luego, necesitamos configurar nuestra aplicación FastAPI para usar Celery. Podemos hacer esto creando un archivo de configuración de Celery y definiendo nuestras tareas en un archivo separado.

Ejemplo de tarea en segundo plano

Aquí hay un ejemplo de cómo podríamos definir una tarea en segundo plano que imprime un mensaje después de un cierto retraso:


from celery import Celery

app = Celery('tasks', broker='redis://localhost')

@app.task
def background_task():
print('Background task running...')

Para ejecutar esta tarea, simplemente llámala desde tu ruta FastAPI utilizando background_task.delay(). La tarea se ejecutará en segundo plano sin bloquear la solicitud principal.

Flower

Para monitorear y administrar nuestras tareas Celery, podemos usar la interfaz web de Flower. Para iniciar Flower, simplemente ejecuta el siguiente comando en tu terminal:

celery -A tasks flower

Esto abrirá una interfaz web donde podrás ver el estado de tus tareas Celery, monitorear su progreso y ver estadísticas en tiempo real.

Conclusión

En resumen, utilizar background tasks en FastAPI con Celery y Flower es una forma eficiente de ejecutar tareas en segundo plano sin bloquear las solicitudes principales. Esto es especialmente útil para procesos que pueden tardar mucho tiempo en completarse. Con la combinación de FastAPI, Celery y Flower, podemos crear aplicaciones web de alto rendimiento con tareas en segundo plano de manera sencilla y eficaz.

0 0 votes
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@diegopolimeni8145
6 months ago

Bella chicca, io in django avevo gestito una cosa del genere creando un thread che eseguiva il task in background. Una domanda, con l'aggiunta di celery come servizio serve anche modificare il dockerfile per fare il deploy!?