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.
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.
2 comentarios en «Automatizar una tarea con el cron Ofelia en Docker y FastAPI»