Automatizar una tarea con el cron Ofelia en Docker y FastAPI

Tiempo de lectura: 1 minuto

Hola, hoy vamos a ver cómo podemos automatizar una tarea usando Ofelia y FastAPI, además de SQLAlchemy.

Lo primero que vamos a hacer es crear el archivo que queremos que se ejecute con el Cron de Ofelia:

cron_ejecutar.py

# Crea db_session u obtenla
from crud.operaciones_crud import operacion_crud_generar_estadisticas
from config.conexion import get_db

db_session = next(get_db())

print("Ejecutando")

operacion_crud_generar_estadisticas(db_session=db_session)

print("Fin")

Primero importamos la operación crud si tenemos, que va a ejecutar la tarea en la Base de Datos.

Después importamos la conexión creada por FastAPI en forma de sesión.

De esta forma podremos reutilizar el código estructurado en FastAPI y no tendremos que volver a duplicarlo.

Es importante que este archivo esté en la raíz del proyecto app/cron_ejecutar.py, ya que lo ejecutaremos como si fuese un módulo con Python.

python -m cron_ejecutar

Una vez creado vamos a instalar Ofelia con Docker Compose. Para ello podemos revisar este POST: https://devcodelight.com/automatizar-tareas-con-cron-desde-docker-con-ofelia/

Nuestro archivo de configuración de Ofelia config.ini será así a nuestro gusto:

[job-exec "job-executed-on-running-container"]
schedule =  @daily
container = contenedor_fast_api
command = python -m cron_ejecutar

schedule = @daily -> Se indica que se va a ejecutar una vez al día.

container = contenedor_fast_api -> Se indica el nombre del contenedor.

command = python -m cron_ejecutar -> Se indica el comando a ejecutar dentro del contenedor.

Los comentarios saldrán en el contenedor de Ofelia.

*Nota, cada vez que cambiemos el config.ini, si tenemos Ofelia en ejecución, deberemos reiniciar el contenedor para que refresque los cambios.

Deja un comentario