Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use Durable Functions, um recurso de Azure Functions, para gravar funções com estado em um ambiente sem servidor. Instale Durable Functions instalando a extensão Azure Functions em Visual Studio Code. A extensão gerencia estado, pontos de verificação e reinicializações em seu aplicativo.
Neste início rápido, você usará a extensão Durable Functions em Visual Studio Code para criar e testar localmente um aplicativo de Durable Functions "olá, mundo" em Azure Functions. O aplicativo Durable Functions orquestra e encadeia chamadas para outras funções. Em seguida, você publica o código da função para Azure. As ferramentas usadas estão disponíveis por meio da extensão Visual Studio Code.
Observação
Este início rápido usa o modelo de programação v2 baseado em decorador para Python. Esse modelo fornece uma estrutura de arquivo mais simples e é mais centrado em código em comparação com a v1.
Pré-requisitos
Para concluir este início rápido, você precisa de:
Visual Studio Code instalado.
A extensão Azure Functions para Visual Studio Code foi instalada.
A versão mais recente do Azure Functions Core Tools instalada.
Uma ferramenta de teste para HTTP que mantém seus dados seguros. Para obter mais informações, confira Ferramentas de teste HTTP.
Uma assinatura Azure para implantar o aplicativo no Azure.
Python versão 3.7, 3.8, 3.9 ou 3.10 instalada.
Se você não tiver uma conta Azure, crie uma conta free antes de começar.
Criar seu projeto local
Nesta seção, você usará Visual Studio Code para criar um projeto de Azure Functions local.
Em Visual Studio Code, selecione F1 (ou selecione Ctrl/Cmd+Shift+P) para abrir a paleta de comandos. No prompt (
>), insira e selecione Azure Functions: Criar Novo Projeto.
Selecione Procurar. Na caixa de diálogo Selecionar Pasta, vá para uma pasta a ser usada em seu projeto e escolha Selecionar.
Nos prompts, forneça as informações a seguir:
Rápido Ação Descrição Selecione uma linguagem para o seu projeto de aplicativo de funções Selecione Python. Cria um projeto local do Python Functions. Selecione uma versão Selecione Azure Functions v4. Você verá essa opção somente quando o Core Tools ainda não estiver instalado. Nesse caso, o Core Tools é instalado na primeira vez que você executa o aplicativo. Python versão Selecione Python 3.7, Python 3.8, Python 3.9 ou Python 3.10. Visual Studio Code cria um ambiente virtual usando a versão selecionada. Selecione um modelo para a primeira função do projeto Selecione Ignorar por enquanto. Selecione como deseja abrir o projeto Selecione Abrir na janela atual. Abre Visual Studio Code na pasta selecionada.
Visual Studio Code instala Azure Functions Core Tools se for necessário criar um projeto. Ele também cria o projeto de aplicativo de funções em uma pasta. Este projeto contém os arquivos de configuração host.json e local.settings.json.
Um arquivo requirements.txt também será criado na pasta raiz. Ele especifica os pacotes de Python necessários para executar seu aplicativo de funções.
Instalar o azure-functions-durable de PyPI
Quando você cria o projeto, a extensão Azure Functions Visual Studio Code cria automaticamente um ambiente virtual com a versão Python selecionada. Em seguida, você precisa ativar o ambiente virtual em um terminal e instalar algumas dependências exigidas por Azure Functions e Durable Functions.
Abra o arquivo requirements.txt no editor e altere o conteúdo dele para o seguinte código:
azure-functions azure-functions-durableNa pasta atual, abra o terminal integrado do editor (Ctrl+Shift+`).
No terminal integrado, ative o ambiente virtual na pasta atual, dependendo do seu sistema operacional.
Em seguida, no terminal integrado onde o ambiente virtual está ativado, use pip para instalar os pacotes que você definiu.
python -m pip install -r requirements.txt
Observação
Você deve instalar azure-functions-durable v1.2.4 ou superior.
Criar suas funções
O aplicativo de Durable Functions mais básico tem três funções:
- Função orquestradora: um fluxo de trabalho que orquestra outras funções.
- Função de atividade: uma função que é chamada pela função orquestradora, executa trabalho e, opcionalmente, retorna um valor.
- função Client: uma função regular em Azure que inicia uma função de orquestrador. Esse exemplo usa uma função acionada por HTTP.
Código de exemplo
Para criar um aplicativo de Durable Functions básico usando esses três tipos de função, substitua o conteúdo de function_app.py pelo seguinte código Python:
import azure.functions as func
import azure.durable_functions as df
myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
# An HTTP-triggered function with a Durable Functions client binding
@myApp.route(route="orchestrators/{functionName}")
@myApp.durable_client_input(client_name="client")
async def http_start(req: func.HttpRequest, client):
function_name = req.route_params.get('functionName')
instance_id = await client.start_new(function_name)
response = client.create_check_status_response(req, instance_id)
return response
# Orchestrator
@myApp.orchestration_trigger(context_name="context")
def hello_orchestrator(context):
result1 = yield context.call_activity("hello", "Seattle")
result2 = yield context.call_activity("hello", "Tokyo")
result3 = yield context.call_activity("hello", "London")
return [result1, result2, result3]
# Activity
@myApp.activity_trigger(input_name="city")
def hello(city: str):
return f"Hello {city}"
Revise a tabela a seguir para obter uma explicação de cada função e sua finalidade no exemplo:
| Método | Descrição |
|---|---|
hello_orchestrator |
A função de orquestrador, que descreve o fluxo de trabalho. Nesse caso, a orquestração é iniciada, invoca três funções em sequência e depois retorna os resultados ordenados de todas as três funções em uma lista. |
hello |
A função de atividade, que executa o trabalho orquestrado. A função retorna uma saudação simples para a cidade passada como um argumento. |
http_start |
Uma função acionada por HTTP que inicia uma instância da orquestração e retorna uma check status resposta. |
Observação
Durable Functions também dá suporte a Python modelo de programação v2 blueprints. Para usar esquemas, registre suas funções de esquema usando a classe azure-functions-durableBlueprintclass. Você pode registrar o blueprint resultante normalmente. Você pode usar nosso sample como exemplo.
Configurar o emulador de armazenamento
Você pode usar Azurite, um emulador para Azure Storage, para testar a função localmente. Em local.settings.json, defina o valor de AzureWebJobsStorage para UseDevelopmentStorage=true como neste exemplo:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python"
}
}
Para instalar e começar a executar a extensão do Azurite no Visual Studio Code, na paleta de comandos, insira Azurite: Iniciar e selecione Enter.
Você pode usar outras opções de armazenamento para seu aplicativo Durable Functions. Para obter mais informações sobre opções de armazenamento e benefícios, consulte Durable Functions provedores de armazenamento.
Testar a função localmente
Azure Functions Core Tools oferece a capacidade de executar um projeto Azure Functions em seu computador de desenvolvimento local. Se ele não estiver instalado, será solicitado que você instale essas ferramentas na primeira vez que iniciar uma função no Visual Studio Code.
Para testar a função, defina um ponto de interrupção no código da função de atividade
hello. Selecione F5 ou selecione Depurar: Iniciar depuração na paleta de comandos para iniciar o projeto do aplicativo de funções. A saída do Core Tools aparece no painel do terminal.Observação
Para obter mais informações sobre depuração, consulte Durable Functions diagnostics.
No painel do terminal, copie o ponto de extremidade da URL da sua função acionada por HTTP.
Use seu navegador ou uma ferramenta de teste para HTTP para enviar uma solicitação HTTP POST para o ponto de extremidade da URL.
Substitua o último segmento pelo nome da função de orquestrador (
hello_orchestrator). A URL deve ser semelhante ahttp://localhost:7071/api/orchestrators/hello_orchestrator.A resposta é o resultado inicial da função HTTP. Ele permite que você saiba que a orquestração durável foi iniciada com êxito. Ela ainda não exibe o resultado final da orquestração. A resposta inclui algumas URLs úteis. Por enquanto, consulte o status da orquestração.
Copie o valor da URL para
statusQueryGetUri, cole-o na barra de endereço do seu navegador e execute a solicitação. Você também pode continuar a usar sua ferramenta de teste HTTP para emitir a solicitação GET.A solicitação consulta a instância de orquestração do status. Você deverá ver que a instância foi concluída e inclui as saídas ou resultados da função durável. Ele é semelhante a este exemplo:
{ "name": "hello_orchestrator", "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a", "runtimeStatus": "Completed", "input": null, "customStatus": null, "output": [ "Hello Tokyo!", "Hello Seattle!", "Hello London!" ], "createdTime": "2020-03-18T21:54:49Z", "lastUpdatedTime": "2020-03-18T21:54:54Z" }Para interromper a depuração, em Visual Studio Code, selecione Shift+F5.
Depois de verificar se a função é executada corretamente no computador local, é hora de publicar o projeto para Azure.
Entrar no Azure
Antes de criar Azure recursos ou publicar seu aplicativo, você deve entrar no Azure.
Se você ainda não estiver conectado, na barra Activity, selecione o ícone Azure. Em seguida, em Resources, selecione Entrar no Azure.
Se você já estiver conectado e puder ver suas assinaturas existentes, vá para a próxima seção. Se você ainda não tiver uma conta Azure, selecione Criar uma conta Azure. Os alunos podem selecionar Criar uma conta do Azure for Students.
Quando você for solicitado no navegador, selecione sua conta de Azure e entre usando suas credenciais de conta Azure. Se você criar uma conta, poderá se conectar depois que a conta for criada.
Após fazer login com sucesso, você poderá fechar a nova janela do navegador. As assinaturas que pertencem à sua conta Azure são exibidas na barra lateral.
Criar o aplicativo de funções no Azure
Nesta seção, você criará um aplicativo de funções no plano de Consumo Flex juntamente com os recursos relacionados em sua assinatura de Azure. Muitas das decisões de criação de recursos são tomadas para você com base em comportamentos padrão. Para obter mais controle sobre os recursos criados, você deve, em vez disso, criar seu aplicativo de funções com opções avançadas.
Em Visual Studio Code, selecione F1 para abrir a paleta de comandos. No prompt (
>), insira e selecione Azure Functions: Criar Aplicativo de Funções no Azure.Nos prompts, forneça as informações a seguir:
Rápido Ação Selecionar assinatura Selecione a assinatura Azure a ser usada. O prompt não aparece quando você tem apenas uma assinatura visível em Recursos. Insira um novo nome do aplicativo de funções Insira um nome globalmente exclusivo que seja válido em um caminho de URL. O nome inserido é validado para garantir que ele seja exclusivo em Azure Functions. Selecione uma localização para novos recursos Selecione uma região Azure. Para obter um melhor desempenho, escolha uma região perto de você. Somente as regiões compatíveis com os planos de Consumo Flex são exibidas. Selecionar uma pilha de runtime Selecione a versão da linguagem que você executa localmente no momento. Selecionar tipo de autenticação de recurso Selecione a identidade gerenciada, que é a opção mais segura para se conectar à conta de armazenamento de host padrão. No painel Azure: Log de Atividades, a extensão Azure mostra o status dos recursos individuais conforme eles são criados em Azure.
Quando o aplicativo de funções é criado, os seguintes recursos relacionados são criados em sua assinatura Azure. Os recursos são nomeados com base no nome que você inseriu para o seu aplicativo de funções.
- Um grupo de recursos, que é um contêiner lógico para recursos relacionados.
- Um aplicativo de funções, que fornece o ambiente para a execução do código de função. Um aplicativo de funções lhe permite agrupar funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos dentro do mesmo plano de hospedagem.
- Um plano Azure App Service, que define o host subjacente para seu aplicativo de funções.
- Uma conta Azure Storage padrão, que é usada pelo host do Functions para manter o estado e outras informações sobre seu aplicativo de funções.
- Uma instância do Application Insights conectada ao aplicativo de funções que acompanha o uso das suas funções no aplicativo.
- Uma identidade gerenciada atribuída pelo usuário adicionada à função Colaborador de Dados de Blobs de Armazenamento na nova conta de armazenamento de host padrão.
Uma notificação é exibida depois que seu aplicativo de funções é criado e o pacote de implantação é aplicado.
Dica
Por padrão, os recursos de Azure exigidos pelo aplicativo de funções são criados com base no nome inserido para seu aplicativo de funções. Por padrão, os recursos são criados com o aplicativo de funções no mesmo novo grupo de recursos. Se você quiser personalizar os nomes dos recursos associados ou reutilizar os recursos existentes, publique o projeto com opções avançadas de criação.
Implantar o projeto para Azure
Importante
A implantação em um aplicativo de funções existente sempre substitui o conteúdo desse aplicativo em Azure.
Na paleta de comandos, insira e selecione Azure Functions: Implantar no Aplicativo de Funções.
Selecione o aplicativo de funções que você acabou de criar. Quando solicitado sobre a substituição de implantações anteriores, selecione Implantar para implantar seu código de função no novo recurso do aplicativo de funções.
Quando a implantação for concluída, selecione View Output para exibir os resultados de criação e implantação, incluindo os recursos de Azure que você criou. Se você não viu a notificação, selecione o ícone do sino no canto inferior direito para vê-la novamente.
Testar sua função no Azure
Copie a URL do gatilho HTTP do painel de saída. A URL que chama sua função acionada por HTTP deve estar nesse formato:
https://<functionappname>.azurewebsites.net/api/orchestrators/hello_orchestratorCole o novo URL da solicitação HTTP na barra de endereço do seu navegador. Ao usar o aplicativo publicado, você pode esperar obter a mesma resposta de status que obteve quando testou localmente.
O aplicativo Python Durable Functions que você criou e publicou usando Visual Studio Code está pronto para uso.
Limpar os recursos
Se você não precisar mais dos recursos que criou para concluir o início rápido, para evitar custos relacionados em sua assinatura Azure, delete o grupo de recursos e todos os recursos relacionados.
Conteúdo relacionado
- Saiba mais sobre padrões comuns de aplicações do Durable Functions.
- Saiba mais sobre o teste de unidade