Prueba los DAG de Airflow

Cloud Composer 1 | Cloud Composer 2

Antes de implementar los DAG en producción, puedes ejecutar subcomandos de la CLI de Airflow para analizar el código del DAG en el mismo contexto en el que se ejecuta.

Realiza pruebas durante la creación del DAG

Puedes ejecutar una única instancia de tarea localmente y ver el resultado del registro. Ver el resultado te permite comprobar si hay errores de sintaxis y tarea. La prueba local no verifica las dependencias ni comunica el estado a la base de datos.

Te recomendamos que coloques los DAG en una carpeta data/test en tu entorno de prueba.

Cómo crear un directorio de prueba

En el bucket de tu entorno, crea un directorio de prueba y copia tus DAG en él.

gsutil cp -r BUCKET_NAME/dags \
  BUCKET_NAME/data/test

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket asociado a tu entorno de Cloud Composer.

Ejemplo:

gsutil cp -r gs://us-central1-example-environment-a12bc345-bucket/dags \
  gs://us-central1-example-environment-a12bc345-bucket/data/test

Para obtener más información sobre cómo subir DAG, consulta Agrega y actualiza DAG.

Cómo comprobar si hay errores de sintaxis

Para verificar si hay errores de sintaxis en los DAG que subiste a la carpeta /data/test, ingresa el siguiente comando gcloud:

Airflow 2

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  dags list -- --subdir /home/airflow/gcs/data/test

Airflow 1

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  list_dags -- -sd /home/airflow/gcs/data/test

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: Es el nombre del entorno.
  • ENVIRONMENT_LOCATION: Es la región en la que se encuentra el entorno.

Cómo verificar si hay errores en las tareas

Para verificar si hay errores específicos de la tarea en los DAG que subiste a la carpeta /data/test, ejecuta el siguiente comando gcloud:

Airflow 2

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  tasks test -- --subdir /home/airflow/gcs/data/test \
  DAG_ID TASK_ID \
  DAG_EXECUTION_DATE

Airflow 1

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  test -- -sd /home/airflow/gcs/data/test DAG_ID \
  TASK_ID DAG_EXECUTION_DATE

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: Es el nombre del entorno.
  • ENVIRONMENT_LOCATION: Es la región en la que se encuentra el entorno.
  • DAG_ID: Es el ID del DAG.
  • TASK_ID: Es el ID de la tarea.
  • DAG_EXECUTION_DATE: Es la fecha de ejecución del DAG. Esta fecha se usa con fines de creación de plantillas. Independientemente de la fecha que especifiques aquí, el DAG se ejecuta de inmediato.

Ejemplo:

Airflow 2

gcloud composer environments run \
  example-environment \
  --location us-central1 \
  tasks test -- --subdir /home/airflow/gcs/data/test \
  hello_world print_date 2021-04-22

Airflow 1

gcloud composer environments run example-environment \
  --location us-central1 \
  test -- -sd /home/airflow/gcs/data/test \
  hello_world print_date 2021-04-22

Actualiza y prueba un DAG implementado

Para probar las actualizaciones de tus DAG en el entorno de prueba, haz lo siguiente:

  1. Copia el DAG implementado que deseas actualizar en data/test.
  2. Actualiza el DAG.
  3. Probar el DAG
    1. Comprueba si hay errores de sintaxis.
    2. Verifica si hay errores específicos de la tarea.
  4. Asegúrate de que el DAG se ejecute correctamente.
  5. Desactiva el DAG en tu entorno de pruebas.
    1. Ve a la página de IU de Airflow > DAG.
    2. Si el DAG que estás modificando se ejecuta constantemente, desactívalo.
    3. Para acelerar las tareas pendientes, haz clic en la tarea y en Marcar como correcta.
  6. Implementa el DAG en tu entorno de producción.
    1. Desactiva el DAG en tu entorno de producción.
    2. Sube el DAG actualizado a la carpeta dags/ en tu entorno de producción.

Preguntas frecuentes sobre las pruebas de DAG

¿Cómo aíslo las ejecuciones de DAG en mis entornos de prueba y producción?

Por ejemplo, Airflow tiene un repositorio global de código fuente en la carpeta dags/ que comparten todas las ejecuciones de DAG. Deseas actualizar el código fuente en producción o prueba sin interferir en la ejecución de los DAG.

Airflow no proporciona un aislamiento sólido del DAG. Recomendamos que mantengas entornos de producción y prueba de Cloud Composer separados para evitar que tus DAG de prueba interfieran en los de producción.

¿Cómo evito la interferencia del DAG cuando ejecuto pruebas de integración desde diferentes ramas de GitHub?

Usa nombres de tareas únicos para evitar interferencias. Por ejemplo, puedes anteponer a las ID de tarea el nombre de la rama.

¿Cuál es la práctica recomendada para realizar pruebas de integración con Airflow?

Te recomendamos que utilices un entorno dedicado para las pruebas de integración con Airflow. Una manera de indicar que el DAG se ejecuta de forma correcta es escribir en un archivo de una carpeta de Cloud Storage y verificar el contenido en tus propios casos de prueba de integración.

¿Cómo puedo colaborar de manera eficiente con otros colaboradores del DAG?

Cada colaborador puede tener un subdirectorio en la carpeta data/ para el desarrollo.

El programador o el servidor web de Airflow no recoge automáticamente los DAG que se agregaron a la carpeta data/

Los colaboradores del DAG pueden crear ejecuciones manuales de este con el comando gcloud composer environments run y el subcomando test con la marca --subdir para especificar el directorio de desarrollo del colaborador.

Por ejemplo:

Airflow 2

gcloud composer environments run test-environment-name \
  tasks test -- dag-id task-id execution-date \
  --subdir /home/airflow/gcs/data/alice_dev

Airflow 1

gcloud composer environments run test-environment-name \
  test -- dag-id task-id execution-date \
  --subdir /home/airflow/gcs/data/alice_dev

¿Cómo mantengo sincronizados mis entornos de implementación y producción?

Para administrar el acceso, sigue estas prácticas:

Para implementar del desarrollo a la producción, sigue estas prácticas:

  • Asegúrate de que la configuración (por ejemplo, de las variables de entorno y los paquetes de PyPI) sea coherente.

  • Asegúrate de que los argumentos del DAG sean coherentes. Para evitar la codificación, te recomendamos que uses macros y variables de Airflow.

    Por ejemplo:

    Airflow 2

    gcloud composer environments run test-environment-name \
      variables set -- DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
    

    Airflow 1

    gcloud composer environments run test-environment-name \
      variables -- --set DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
    

¿Qué sigue?