DAG de prueba

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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.

Prueba los DAG de manera local con la herramienta de CLI de desarrollo local de Composer

La herramienta de la CLI de desarrollo local de Composer optimiza Desarrollo del DAG de Apache Airflow para Cloud Composer 2 a través de la ejecución de un Airflow de forma local. Este entorno local de Airflow usa una imagen de un una versión específica de Cloud Composer 2.

Puedes desarrollar y probar tus DAG con este entorno local de Airflow. y, luego, transferir los DAG a tu entorno de prueba de Cloud Composer. En el resto de esta guía, se describe cómo probar DAG en un entorno de Cloud Composer de prueba.

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 cópialo en él.

gcloud storage cp BUCKET_NAME/dags \
  BUCKET_NAME/data/test --recursive

Reemplaza lo siguiente:

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

Ejemplo:

gcloud storage cp gs://us-central1-example-environment-a12bc345-bucket/dags \
  gs://us-central1-example-environment-a12bc345-bucket/data/test --recursive

Para obtener más información sobre cómo subir DAG, consulta Cómo agregar y actualizar DAG.

Comprueba si hay errores de sintaxis

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

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  dags list -- --subdir /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.

Verifica si hay errores en la tarea

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

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location ENVIRONMENT_LOCATION \
  tasks test -- --subdir /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:

gcloud composer environments run \
  example-environment \
  --location us-central1 \
  tasks test -- --subdir /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. Prueba 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 prueba.
    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 para probar los 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 el archivo dags/. que comparten todas las ejecuciones de DAG. Quieres 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 recuperan automáticamente los DAG agregados 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:

gcloud composer environments run test-environment-name \
  tasks 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 usar las macros y variables de Airflow.

    Por ejemplo:

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

¿Qué sigue?