Initial commit: SaveUrl project migration from Drive
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# 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)
|
||||
|
||||
Reference in New Issue
Block a user