Files
save-url-main/documentacion/04_DESPLIEGUE_AIRFLOW.md
T
2026-05-09 14:20:17 -04:00

76 lines
2.1 KiB
Markdown

# Despliegue en Apache Airflow
## Qué se despliega
- DAG: `dag_save_url_ftp.py`
- Módulo Python: `SaveUrl.py` (debe ser importable por el DAG)
## Ruta esperada por el DAG
En `dag_save_url_ftp.py` se define un `sys.path.insert`:
- `sys.path.insert(0, '/opt/airflow/dags/save_url_ftp')`
Por tanto, dentro del contenedor/host donde corre Airflow, se espera:
- `/opt/airflow/dags/save_url_ftp/SaveUrl.py`
- `/opt/airflow/dags/save_url_ftp/dag_save_url_ftp.py`
> Si tu instalación usa otra ruta de `dags_folder`, ajusta el montaje/volumen para que esa estructura exista dentro del runtime.
## Parámetros del DAG
En `dag_save_url_ftp.py`:
- `dag_id`: `save_url_ftp`
- schedule: `0 */2 * * *` (cada 2 horas)
- `retries`: 2
- `retry_delay`: 5 minutos
- `catchup`: `False`
- `max_active_runs`: 1
Estructura de tareas:
- `inicio` (EmptyOperator) → `save_url_ftp` (PythonOperator) → `fin` (EmptyOperator)
## Variables de Airflow necesarias
Define las Variables descritas en `03_CONFIGURACION_VARIABLES.md`.
En particular, `SaveUrl.py` requiere:
- `WEBHOOK_URL_NOTIFICATION`
- `BOOTSTRAP_SERVERS_DOCKER`
- `KAFKA_USE_SSL`
- `FTP_000oqta_SERVER`, `FTP_000oqta_USER`, `FTP_000oqta_PASSWORD`
- `DB_MSSQ_USER`, `DB_MSSQ_PASSWORD`, `DB_MSSQ_SERVER`
## Permisos y conectividad
- **Worker/Scheduler** que ejecute el PythonOperator debe tener:
- salida a red hacia FTP, SQL Server y Kafka
- driver ODBC instalado (si se usa `pyodbc` en el worker)
## Operación esperada en Airflow
Durante la ejecución, el task `save_url_ftp` escribe logs tipo:
- inicio/final
- estado por “BD” lógica (cada item de `INFORMATIONS`)
- conteos: archivos FTP, registros existentes, registros a insertar
Si ocurre un error en FTP/SQL/INSERT:
- registra `FAILED` en Kafka
- envía webhook con el mensaje de alerta
- continúa con la siguiente “BD” (no falla toda la corrida por un único item)
## Checklist de despliegue
- DAG visible y sin errores de importación
- `SaveUrl.py` importable desde la ruta insertada en `sys.path`
- Variables creadas (y protegidas si aplica)
- Driver ODBC disponible en el runtime
- Conectividad validada (FTP/SQL/Kafka/webhook)