Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)
En esta página, se explica cómo solucionar problemas de conflictos de dependencias cuando se instalan paquetes de PyPI personalizados.
El problema más común con los paquetes de PyPI que puedes encontrar en Managed Airflow son los conflictos de dependencias.
Cuando especificas un nuevo paquete de PyPI personalizado para instalar, este paquete o su versión pueden causar conflictos de dependencias con otros paquetes de PyPI personalizados o paquetes preinstalados en tu entorno. En este caso, la operación de actualización del entorno falla con un error.
Cloud Build y errores de compilación en el clúster
Si se produce un problema con los paquetes, recibirás el mensaje de error de dos maneras, según la forma en que se implemente tu entorno:
Cloud Build. Un mensaje de error y un vínculo al registro de Cloud Build. Por ejemplo:
UPDATE operation on this environment failed 25 minutes ago with the following error message: Failed to install PyPI packages. Check the Cloud Build log at ...Compilaciones en el clúster. Un mensaje de error y la ubicación de los registros de compilación. Por ejemplo:
UPDATE operation on this environment failed 17 minutes ago with the following error message: Failed to install PyPI packages. Check the in-cluster build logs for details. They can be found in the Environment logs under the build-log-* log name.
Consulta el mensaje de error detallado
Cuando falla la instalación de un paquete, pip informa el mensaje de error detallado.
Puedes encontrar este mensaje de error en los registros de compilación.
Ubica el error de pip en los registros de Cloud Build
Puedes seguir el vínculo desde el mensaje de error de Cloud Build o ubicar los registros de compilación:
Ubica los registros de compilación:
En la Google Cloud consola, ve a la página Historial de compilaciones.
Selecciona la compilación fallida para ver sus registros.
En el registro de compilación, busca el mensaje de error de
pip. Por ejemplo:ERROR: apache-airflow-backport-providers-google 2021.2.5 has requirement google-cloud-logging<3.0.0,>=2.1.1, but you'll have google-cloud-logging 1.15.0 which is incompatible.
Ubica el error de pip en los registros de compilación en el clúster
Ubica los registros de compilación:
En la Google Cloud consola, ve a la página Entornos.
Selecciona tu entorno.
Abre la pestaña Registros.
Selecciona Todos los registros > Registros de Composer > Compilaciones > Imagen de trabajador y programador.
En la lista desplegable Gravedad, selecciona Información.
En los registros mostrados, haz lo siguiente:
Ubica el mensaje de error
installer.sh. Por ejemplo:The command '/bin/sh -c bash installer.sh $COMPOSER_PYTHON_VERSION fail' returned a non-zero code: 1Los mensajes de información anteriores tienen el error
pipdetallado. Por ejemplo:apache-airflow-backport-providers-google 2021.2.5 has requirement google-cloud-logging<3.0.0,>=2.1.1, but you have google-cloud-logging 1.15.0.
Tiempos de espera agotados durante la instalación del paquete de Python
En las versiones recientes, la utilidad pip cambió su comportamiento cuando intenta satisfacer las dependencias. Si no se pueden satisfacer las dependencias especificadas, pip pasa por todas las versiones disponibles de un paquete.
Cuando instalas un paquete, sucede lo siguiente:
Si el paquete ya está preinstalado en tu entorno y las dependencias de Python que especificas no requieren ningún cambio, el paquete permanece como está.
Ejemplo:
aiodebug==2.3.0está instalado y especificasaiodebugoaiodebug>=2.Si el paquete aún no está instalado en tu entorno o no satisface las dependencias de Python que especificas,
pipintenta usar la versión más reciente que satisface las dependencias. Esta es la versión más reciente del paquete si no especificaste una versión o la versión más reciente del paquete que satisface las restricciones especificadas.Ejemplo: Si especificas
aiodebug, se instalará la versión más reciente (2.*.*). Si especificasaiodebug<2, se instalará 1.*.*.Si esta versión causa conflictos de dependencias con los paquetes preinstalados,
pippasa por todas las versiones disponibles del paquete para intentar satisfacer la dependencia especificada. Cuando sucede, los siguientes mensajes estarán visibles en el registro de compilación:INFO: pip is looking at multiple versions of PYTHON_PACKAGE_NAME to determine which version is compatible with other requirements. This could take a while.Antes del cambio,
pipfallaba con un conflicto de dependencias sin verificar otras versiones.
Pasar por todas las versiones disponibles puede llevar una cantidad significativa de tiempo y provocar un cambio a una versión anterior de los paquetes o un tiempo de espera agotado durante la instalación del paquete de Python.
Los paquetes preinstalados en Managed Airflow se actualizan con regularidad a las versiones más recientes por motivos de seguridad. Por lo tanto, también puede ocurrir un tiempo de espera agotado cuando actualizas un entorno a una versión posterior de Managed Airflow.
Posibles soluciones:
Actualiza con regularidad las dependencias personalizadas de Python.
Usa PythonVirtualenvOperator para aislar fragmentos de código que requieren paquetes en conflicto.
Conflictos con paquetes de PyPI preinstalados
Algunos conflictos de paquetes se producen entre los paquetes de PyPI personalizados que instalas y los paquetes preinstalados.
Puedes ver la lista completa de paquetes preinstalados para tu versión de Managed Airflow en la página Versiones de Managed Airflow.
Para resolver este problema, puedes hacer lo siguiente:
Instala una versión diferente del paquete de PyPI personalizado.
Instala una versión diferente del paquete preinstalado. Para ello, instala un paquete de PyPI personalizado con el nombre del paquete preinstalado y especifica la versión requerida. No recomendamos cambiar a una versión inferior los paquetes preinstalados.
Consulta si las versiones posteriores de Managed Airflow usan una versión diferente del paquete preinstalado. Puedes verificar si hay posibles conflictos de paquetes de PyPI antes de actualizar tu entorno a una versión posterior de Managed Airflow.
Usa PythonVirtualenvOperator para aislar fragmentos de código que requieren paquetes en conflicto.
Servidor de metadatos no disponible cuando se instalan paquetes de PyPI
Si tu entorno usa un archivo personalizado pip.conf,
es posible que tengas un problema cuando no se puedan instalar paquetes de PyPI nuevos en
tu entorno. En los registros de Cloud Build relacionados con el error de instalación del paquete, puedes ver el siguiente mensaje de advertencia:
WARNING: Compute Engine Metadata server unavailable on attempt 3 of 3. Reason:
timed out
WARNING: Authentication failed using Compute Engine authentication due to
unavailable metadata server.
Este problema se debe a un archivo pip.conf que no permite el acceso al
índice de paquetes predeterminado
en https://pypi.org/simple. Por ejemplo, si tu archivo pip.conf solo permite instalar paquetes desde un repositorio personalizado de Artifact Registry debido al parámetro index-url redefinido, la instalación de paquetes desde el índice de paquetes predeterminado no está disponible.
Para resolver este problema, asegúrate de que el índice de paquetes https://pypi.org/simple se agregue a tu archivo pip.conf. Por ejemplo, si tu índice de paquetes principal
se define en el index-url parámetro, agrega el https://pypi.org/simple
índice en el extra-index-url parámetro.