Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Azure Functions suporta três opções de compilação para publicar as suas aplicações Python no Azure. Escolha o método de construção com base no ambiente local, dependências da aplicação e requisitos de runtime.
Comparação rápida para ações de construção
| Tipo de implantação | Onde as dependências são instaladas | Caso de utilização típica |
|---|---|---|
| Build remoto (recomendado) | Azure (App Service) | Padrão, recomendado para a maioria dos utilizadores |
| Construção local | A tua máquina | Desenvolvedores Linux/macOS, cenários limitados para Windows |
| Dependências personalizadas | Tratado através de URL de índice extra ou instalação local | Dependências não-PyPI |
Considerações sobre o pacote de implementação
Ao implementar a sua aplicação de funções Python para Azure, tenha em mente estes requisitos de empacotamento:
- Conteúdo do pacote, não da pasta: Implemente o conteúdo da pasta do seu projeto, não a pasta em si.
-
Nível
host.jsonraiz: Certifique-se de que um únicohost.jsonficheiro está na raiz do pacote de implementação, não estando dentro de uma subpasta. -
Excluir ficheiros de desenvolvimento: Pode excluir pastas como
tests/,.github/, e.venv*/do pacote implementado incluindo-as em.funcignore. - O ambiente de compilação deve corresponder ao ambiente de produção: as suas dependências devem ser construídas numa máquina Ubuntu usando a mesma versão em python da aplicação de produção. O remote build gere este cenário automaticamente.
-
As dependências devem ser instaladas em:
./.python_packages/lib/site-packagesA compilação remota instala todas as dependências listadasrequirements.txtno diretório correto. -
Tenha em mente o tamanho do pacote de implementação: conjuntos de dependências grandes aumentam o tempo de construção, a latência de arranque a frio e o tempo de importação e inicialização do módulo. Aplicações com grandes bibliotecas científicas ou de aprendizagem automática (incluindo
pytorch) são especialmente afetadas. - A compilação remota tem um timeout de 60 segundos: Se a instalação da dependência exceder o limite, a compilação falha. Nesse caso, considere usar build local e desenvolver com dependências pré-compiladas.
-
A importação de módulos tem um limite de tempo de 2 minutos: o carregamento e indexação de funções em Python durante o arranque tem um limite de 2 minutos para Python 3.13 e superiores, ou para versões mais antigas de python com
PYTHON_ENABLE_INIT_INDEXINGativação. Se a tua aplicação ultrapassar este limite, reduz as importações de topo ou usa importações preguiçosas (importar módulos dentro do corpo da função em vez de no âmbito global).
Compilação remota
A compilação remota é a abordagem recomendada para uma implementação apenas de código da sua aplicação Python em Functions.
Com build remota, a plataforma Functions gere a instalação dos pacotes e garante compatibilidade com o ambiente de execução remoto. Usar build remota também resulta num pacote de implementação mais pequeno.
Pode usar a compilação remota quando publica a sua aplicação Python usando estas ferramentas:
-
Azure Functions Core Tools: o
func azure functionapp publishcomando solicita uma compilação remota por padrão ao publicar aplicações em Python. -
AZ CLI:
az functionapp deployment source config-zipusa a compilação remota por padrão ao implementar aplicações Python. - Visual Studio Code: Azure Functions: Deploy to Azure... comando usa sempre uma build remota.
-
Entrega contínua com Ações do GitHub: a ação Azure/functions-action@v1 usa compilação remota quando o
remote-buildparâmetro está definido comotruepara o plano Flex Consumption ou quandoscm-do-build-during-deploymenteenable-oryx-buildestão definidos comotruepara planos dedicados.
Para permitir a compilação remota para outros cenários, como entrega contínua com Azure Pipelines, veja Ativar a Construção Remota.
A compilação remota também suporta índices personalizados de pacotes quando utiliza a configuração da PIP_EXTRA_INDEX_URL aplicação. Para obter mais informações, consulte Compilação remota.
Importante
A compilação remota instala todas as dependências listadas em requirements.txt. Para garantir que todos os pacotes necessários estão instalados, certifique-se de incluir essas dependências no seu requirements.txt ficheiro.
Construção local
Se não solicitares uma build remota, então as dependências são instaladas na tua máquina. Todo o projeto local e as dependências são então empacotados localmente e implementados na tua aplicação de funções. Usar compilações locais resulta num carregamento de pacote maior.
Também precisas de instalar dependências no diretório correto. Use pip install --target="./.python_packages/lib/site-packages" para instalar as dependências necessárias na sua pasta local .python_packages/lib/site-packages .
Por exemplo, se tiver as suas dependências listadas num requirements.txt ficheiro, pode executar este comando:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Use a compilação local quando:
- Estás a desenvolver localmente em Linux ou macOS.
- A montagem remota não está disponível ou é limitada.
- Quer definir dependências num ficheiro diferente de
requirements.txt, comopyproject.toml.
As seguintes ferramentas podem ser configuradas para usar compilações locais:
- Azure Functions Core Tools: utilizar
func azure functionapp publishcom o--no-buildsinalizador. -
AZ CLI:
az functionapp deployment source config-zipcom a--build-remote=falsebandeira. -
Entrega contínua usando GitHub Actions: defina o parâmetro
remote-buildparafalseno plano Flex Consumption ou definascm-do-build-during-deploymenteenable-oryx-buildparafalsenos planos dedicados.
Importante
Ao desenvolver as suas aplicações Python num computador Windows, não use compilação local. Os pacotes construídos num computador Windows frequentemente têm problemas para serem implementados e executados no Linux no Azure Functions. Só usa compilações locais se estiveres confiante de que o pacote corre em sistemas baseados em Linux.
Dependências personalizadas
O Azure Functions suporta dependências personalizadas e outras que não sejam PyPI, utilizando a PIP_EXTRA_INDEX_URL configuração da aplicação ou criando uma compilação local num computador Linux ou macOS.
Compilação remota com um URL adicional de índice
Quando os seus pacotes privados estiverem disponíveis online, pode solicitar uma compilação remota após definir a localização do pacote privado usando a definição de aplicação de PIP_EXTRA_INDEX_URL.
Quando defines PIP_EXTRA_INDEX_URL, compilações remotas usam este feed de pacotes durante a implementação.
PIP_INDEX_URL substitui o índice do pacote, por isso considere usar PIP_EXTRA_INDEX_URL em vez disso para evitar comportamentos inesperados.
Pacotes ou rodas locais
Pacotes e rodas locais são suportados na construção de aplicações Azure Function em Python.
Para instalar estes pacotes ou rodas usando compilação remota, pode incluir as dependências no seu requirements.txt ficheiro e implementar com a compilação remota ativada.
Por exemplo, o seu requirements.txt ficheiro pode assemelhar-se ao seguinte excerto:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Para instalar estas dependências usando a compilação local, instala as dependências na tua pasta local .python_packages/lib/site-packages e implementa com a compilação remota desativada.
Por exemplo, se tiver os pacotes definidos no seu requirements.txt ficheiro, pode instalar e publicar usando os seguintes comandos e as Ferramentas Core:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build