Compartilhar via


Criar seus aplicativos do Python Azure Functions

O Azure Functions dá suporte a três opções de build para publicar seus aplicativos Python no Azure. Escolha seu método de build com base em seu ambiente local, dependências de aplicativo e requisitos de runtime.

Comparação rápida para ações de build

Tipo de implantação Onde as dependências são instaladas Caso de uso típico
Compilação remota (recomendado) Azure (Serviço de Aplicativo) Padrão, recomendado para a maioria dos usuários
Compilação local Seu computador Devs do Linux/macOS, cenários limitados do Windows
Dependências personalizadas Gerenciado por meio de URL de índice extra ou instalação local Dependências não PyPI

Considerações sobre o pacote de implantação

Ao implantar seu aplicativo de funções python no Azure, lembre-se desses requisitos de empacotamento:

  • Conteúdo do pacote, não a pasta: Implante o conteúdo da pasta do projeto, não a pasta em si.
  • Nível da raiz host.json: verifique se há um único host.json arquivo na raiz do pacote de implantação e não dentro de nenhuma subpasta.
  • Excluir arquivos de desenvolvimento: você pode excluir pastas como tests/, .github/e .venv*/ do pacote implantado, incluindo-os em .funcignore.
  • O ambiente de build deve corresponder ao ambiente de produção: suas dependências devem ser criadas em um computador ubuntu usando a mesma versão do Python que o aplicativo de produção. O build remoto manipula esse cenário automaticamente.
  • As dependências devem ser instaladas em ./.python_packages/lib/site-packages: o build remoto instala todas as dependências listadas no requirements.txt diretório correto.
  • Tenha em mente o tamanho do pacote de implantação: grandes conjuntos de dependências aumentam o tempo de build, a latência de início frio e o tempo de importação e inicialização do módulo. Aplicativos com grandes bibliotecas científicas ou de ML (incluindo pytorch) são especialmente afetados.
  • O build remoto tem um tempo limite de 60 segundos: se a instalação de dependência exceder o limite, o build falhará. Nesse caso, considere usar um build local e implantar com dependências predefinidas.
  • A importação de módulo tem um limite de tempo de 2 minutos: o carregamento do módulo Python e a indexação de funções durante a inicialização têm um limite de 2 minutos para Python 3.13 e superior, ou para versões mais antigas do Python com PYTHON_ENABLE_INIT_INDEXING habilitado. Se seu aplicativo exceder isso, reduza as importações de nível superior ou use importações lentas (importe módulos dentro do corpo da função em vez de no escopo global).

Build remoto

O build remoto é a abordagem recomendada para uma implantação somente de código do aplicativo Python para o Functions.

Com o build remoto, a plataforma Functions gerencia a instalação de pacotes e garante a compatibilidade com o ambiente de runtime remoto. Usar o build remoto também resulta em um pacote de implantação menor.

Você pode usar o build remoto ao publicar seu aplicativo Python usando estas ferramentas:

Para habilitar o build remoto para outros cenários, como entrega contínua com o Azure Pipelines, consulte Habilitando o Build Remoto.

O build remoto também dá suporte a índices de pacote personalizados ao se usar a PIP_EXTRA_INDEX_URL configuração do aplicativo. Para obter mais informações, consulte o build remoto.

Importante

O build remoto instala todas as dependências listadas em requirements.txt. Para garantir que todos os pacotes necessários estejam instalados, certifique-se de incluir essas dependências em seu requirements.txt arquivo.

Construção local

Se você não solicitar um build remoto, as dependências serão instaladas em seu computador. Todo o projeto local e as dependências são empacotados localmente e implantados em seu aplicativo de funções. Usar o build local resulta em um upload de pacote maior.

Você também precisa instalar dependências no diretório correto. Use pip install --target="./.python_packages/lib/site-packages" para instalar as dependências necessárias em sua pasta local .python_packages/lib/site-packages . Por exemplo, se você tiver suas dependências listadas em um requirements.txt arquivo, poderá executar este comando:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt

Use o build local quando:

  • Você está desenvolvendo localmente no Linux ou no macOS.
  • O build remoto não está disponível ou está restrito.
  • Você deseja definir dependências em um arquivo diferente de requirements.txt, como pyproject.toml.

As seguintes ferramentas podem ser configuradas para usar o build local:

Importante

Ao desenvolver seus aplicativos Python em um computador Windows, não use o build local. Os pacotes criados em um computador Windows geralmente têm problemas ao serem implantados e executados no Linux no Azure Functions. Use apenas o build local se estiver confiante de que o pacote é executado em sistemas baseados em Linux.

Dependências personalizadas

O Azure Functions dá suporte a dependências personalizadas e outras não PyPI, usando a configuração de aplicativo PIP_EXTRA_INDEX_URL ou criando uma compilação local em um computador Linux ou macOS.

Compilação remota com uma URL de índice extra

Quando seus pacotes privados estiverem disponíveis online, você poderá solicitar um build remoto depois de definir o local do pacote privado usando a configuração do PIP_EXTRA_INDEX_URL aplicativo. Quando você define PIP_EXTRA_INDEX_URL, as compilações remotas utilizam esse feed de pacotes durante a implantação. PIP_INDEX_URL substitui o índice de pacote, portanto, considere usar PIP_EXTRA_INDEX_URL em vez disso para evitar um comportamento inesperado.

Pacotes ou rodas locais

Há suporte para pacotes locais e rodas ao criar aplicativos python do Azure Function.

Para instalar esses pacotes ou rodas usando o build remoto, você pode incluir as dependências em seu requirements.txt arquivo e implantar com o build remoto habilitado.

Por exemplo, seu requirements.txt arquivo pode se parecer com o seguinte snippet:

 # Installing a custom wheel
 <my_package_wheel>.whl
 
 # Installing a local package
 path/to/my/package

Para instalar essas dependências usando o build local, instale as dependências em sua pasta local .python_packages/lib/site-packages e implante com o build remoto desabilitado. Por exemplo, se você tiver os pacotes definidos em seu requirements.txt arquivo, poderá instalar e publicar usando os seguintes comandos e Ferramentas Principais:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build