2.2 KiB
2.2 KiB
Visión general
¿Qué hace este proyecto?
El proyecto lee listados de archivos desde un servidor FTP, construye URLs públicas para esos archivos y guarda las URLs en SQL Server dentro de una tabla llamada URL_FTP.
Durante la ejecución también:
- publica eventos de ejecución en Kafka (topic
executions_logs) - envía una notificación por webhook ante errores (mensaje tipo “alerta pipeline”)
El entrypoint operativo está pensado para ejecutarse desde Apache Airflow a través de un DAG.
Componentes principales
SaveUrl.py- contiene la lógica de negocio (
run_save_url) - implementa:
- lectura FTP (
read_ftp) - lectura SQL filtrada por carpeta (
read_table_where) - inserción en SQL en lotes (
insert_records) - logger a Kafka (
KafkaLogger)
- lectura FTP (
- contiene la lógica de negocio (
dag_save_url_ftp.py- define el DAG
save_url_ftpy ejecutarun_save_url
- define el DAG
Entornos y configuración
Este proyecto se configura con variables de Airflow (Airflow Variables). Aunque el README.md menciona .env, el código actual usa airflow.models.Variable.get(...) para obtener:
- credenciales SQL Server
- credenciales FTP
- configuración Kafka (incluyendo SSL/SASL)
- URL de webhook de notificación
Frecuencia de ejecución
El DAG está programado con:
- cron:
0 */2 * * *(cada 2 horas)
Fuentes/“BDs” procesadas
En cada ejecución se itera sobre una lista fija (en SaveUrl.py) con entradas del tipo:
- nombre de carpeta base (ej.
glmpmi) identity_idusado para parsear el nombre de archivo/URL- nombre de “database” lógico usado para logs (ej.
glm_pmi) database_id(para construirprocedure_iddel log)
Para cada entrada se calcula un code_folder con el mes actual (formato MM), por ejemplo: glmpmi04.
Salida principal
- Tabla destino:
URL_FTP(SQL Server) - Campos calculados por registro (a partir de la URL):
FolderDateIDcodigoObjectCodeTaskNameURL
Señales de observabilidad
- Logs en Airflow (logger estándar de Python)
- Logs “estructurados” en Kafka en
executions_logs - Notificación por webhook en fallos de FTP/SQL/INSERT