Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Functions admite tres opciones de compilación para publicar las aplicaciones de Python en Azure. Elija el método de compilación en función del entorno local, las dependencias de la aplicación y los requisitos en tiempo de ejecución.
Comparación rápida de acciones de compilación
| Tipo de implementación | Dónde se instalan las dependencias | Caso de uso típico |
|---|---|---|
| Compilación remota (recomendada) | Azure (App Service) | Valor predeterminado, recomendado para la mayoría de los usuarios |
| Compilación local | Tu máquina | Desarrolladores de Linux/macOS, escenarios limitados de Windows |
| Dependencias personalizadas | Se controla a través de una dirección URL de índice adicional o una instalación local | Dependencias ajenas a PyPI |
Consideraciones sobre paquetes de implementación
Al implementar la aplicación de funciones de Python en Azure, tenga en cuenta estos requisitos de empaquetado:
- Contenido del paquete, no la carpeta: implemente el contenido de la carpeta del proyecto, no la propia carpeta.
-
Nivel
host.jsonraíz: Asegúrese de que haya un solo archivohost.jsonen la raíz del paquete de implementación, no anidado en una subcarpeta. -
Excluir archivos de desarrollo: puede excluir carpetas como
tests/,.github/y.venv*/del paquete implementado incluyéndolas en.funcignore. - El entorno de compilación debe coincidir con el entorno de producción: las dependencias deben compilarse en una máquina ubuntu con la misma versión de Python que la aplicación de producción. La compilación remota controla este escenario automáticamente.
-
Las dependencias deben instalarse en
./.python_packages/lib/site-packages: la compilación remota instala todas las dependencias enumeradas enrequirements.txtel directorio correcto. -
Tenga en cuenta el tamaño del paquete de implementación: los conjuntos de dependencias grandes aumentan el tiempo de compilación, la latencia de inicio en frío y el tiempo de importación e inicialización del módulo. Las aplicaciones con grandes bibliotecas científicas o de APRENDIZAJE automático (incluidas
pytorch) se ven especialmente afectadas. - La compilación remota tiene un tiempo de espera de 60 segundos: si la instalación de dependencia supera el límite, se produce un error en la compilación. En ese caso, considere la posibilidad de usar una compilación local e implementar con dependencias precompiladas.
-
La importación de módulos tiene un límite de tiempo de 2 minutos: la carga de módulos de Python y la indexación de funciones durante el inicio tienen un límite de 2 minutos para Python 3.13 y versiones posteriores, o para versiones anteriores de Python con
PYTHON_ENABLE_INIT_INDEXINGhabilitado. Si la aplicación supera esto, reduzca las importaciones de nivel superior o use importaciones diferidas (importe módulos dentro del cuerpo de la función en lugar de en el ámbito global).
Compilación remota
La compilación remota es el enfoque recomendado para una implementación solo de código de la aplicación de Python en Functions.
Con la compilación remota, la plataforma Functions controla la instalación del paquete y garantiza la compatibilidad con el entorno de tiempo de ejecución remoto. El uso de la compilación remota también da como resultado un paquete de implementación más pequeño.
Puede usar la compilación remota al publicar la aplicación de Python con estas herramientas:
-
Azure Functions Core Tools: el
func azure functionapp publishcomando solicita una compilación remota de forma predeterminada al publicar aplicaciones de Python. -
CLI de AZ:
az functionapp deployment source config-zipusa la compilación remota de forma predeterminada al implementar aplicaciones de Python. - Visual Studio Code: el comando Azure Functions: Deploy to Azure... (Implementar en Azure...) siempre usa una compilación remota.
-
Entrega continua mediante Acciones de GitHub: la acción Azure/functions-action@v1 hace uso de la compilación remota cuando el parámetro
remote-buildse establece entruepara el plan de consumo flexible o cuando los parámetrosscm-do-build-during-deploymentyenable-oryx-buildse establecen entruepara planes dedicados.
Para habilitar la compilación remota para otros escenarios, como la entrega continua con Azure Pipelines, consulte Habilitación de la compilación remota.
La compilación remota también admite índices de paquete personalizados cuando se usa la configuración de la PIP_EXTRA_INDEX_URL aplicación. Para obtener más información, consulte Compilación remota.
Importante
La compilación remota instala todas las dependencias enumeradas en requirements.txt. Para asegurarse de que se instalan todos los paquetes necesarios, asegúrese de incluir esas dependencias en el requirements.txt archivo.
Compilación local
Si no solicita una compilación remota, las dependencias se instalan en el equipo. A continuación, todo el proyecto local y las dependencias se empaquetan localmente e implementan en la aplicación de funciones. El uso de la compilación local da como resultado una carga de paquetes mayor.
También debe instalar dependencias en el directorio correcto. Use pip install --target="./.python_packages/lib/site-packages" para instalar las dependencias necesarias en la carpeta local .python_packages/lib/site-packages .
Por ejemplo, si tiene las dependencias enumeradas en un requirements.txt archivo, puede ejecutar este comando:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Use la compilación local cuando:
- Está desarrollando localmente en Linux o macOS.
- La compilación remota no está disponible o está restringida.
- Quiere definir dependencias en un archivo distinto de
requirements.txt, comopyproject.toml.
Las siguientes herramientas se pueden configurar para usar la compilación local:
-
Azure Functions Core Tools: use
func azure functionapp publishcon el--no-buildindicador. -
CLI de AZ:
az functionapp deployment source config-zipcon el indicador--build-remote=false. -
Entrega continua mediante Acciones de GitHub: establezca el parámetro
remote-buildafalsepara el plan Flex Consumption o establezcascm-do-build-during-deploymentyenable-oryx-buildafalsepara planes dedicados.
Importante
Al desarrollar las aplicaciones de Python en un equipo Windows, no use la compilación local. Los paquetes construidos en un equipo Windows a menudo tienen problemas al ser implementados y ejecutados en Linux dentro de Azure Functions. Use solo la compilación local si está seguro de que el paquete se ejecuta en sistemas basados en Linux.
Dependencias personalizadas
Azure Functions admite dependencias personalizadas y otras no incluidas en PyPI mediante la configuración de la aplicación PIP_EXTRA_INDEX_URL o creando una compilación local en un equipo con Linux o macOS.
Compilación remota con una dirección URL de índice adicional
Cuando los paquetes privados estén disponibles en línea, puede solicitar una compilación remota después de establecer la ubicación del paquete privado mediante la configuración de la PIP_EXTRA_INDEX_URL aplicación.
Al establecer PIP_EXTRA_INDEX_URL, las compilaciones remotas usan esta fuente de paquetes durante la implementación.
PIP_INDEX_URL reemplaza el índice del paquete, por lo que considere la posibilidad de usar PIP_EXTRA_INDEX_URL en su lugar para evitar un comportamiento inesperado.
Paquetes locales o ruedas
Se admiten paquetes locales y wheels al compilar aplicaciones de Azure Functions de Python.
Para instalar estos paquetes o ruedas mediante la compilación remota, puede incluir las dependencias en requirements.txt el archivo e implementarlas con la compilación remota habilitada.
Por ejemplo, el requirements.txt archivo podría tener un aspecto similar al siguiente fragmento de código:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Para instalar estas dependencias mediante la compilación local, instale las dependencias en la carpeta local .python_packages/lib/site-packages e implemente con la compilación remota deshabilitada.
Por ejemplo, si tiene los paquetes definidos en el requirements.txt archivo, puede instalar y publicar mediante los siguientes comandos y Core Tools:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build