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

2.1 KiB

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)