Compartilhar via


Gatilho de aquecimento do Azure Functions

Este artigo explica como trabalhar com o gatilho de aquecimento no Azure Functions. Um gatilho de aquecimento é invocado quando uma instância é adicionada para dimensionar um aplicativo de funções em execução. O gatilho de aquecimento permite que você defina uma função que é executada quando uma nova instância do aplicativo de funções é iniciada. Use um gatilho de aquecimento para pré-carregar dependências personalizadas, de modo que as funções estejam prontas para começar a processar as solicitações imediatamente. Algumas ações para um gatilho de aquecimento podem incluir a abertura de conexões, o carregamento de dependências ou a execução de qualquer outra lógica personalizada antes que seu aplicativo comece a receber tráfego.

As seguintes considerações se aplicam ao usar um gatilho de aquecimento:

  • O gatilho de aquecimento não está disponível para aplicativos em execução no Plano de consumo.
  • Não há compatibilidade com o gatilho de aquecimento na versão 1.x do runtime do Functions.
  • O suporte para o gatilho de aquecimento é fornecido por padrão em todos os ambientes de desenvolvimento. Você não precisa instalar o pacote ou registrar a extensão manualmente.
  • Pode haver apenas uma função de gatilho de aquecimento por aplicativo de funções, e ela não pode ser invocada depois que a instância já está em execução.
  • O gatilho de aquecimento só é chamado durante as operações de expansão, não durante as reinicializações ou outras inicializações sem escala. Verifique se a sua lógica pode carregar todas as dependências necessárias sem depender do gatilho de aquecimento. O carregamento lento é um bom padrão para conseguir isso.
  • As dependências criadas pelo gatilho de aquecimento devem ser compartilhadas com outras funções em seu aplicativo. Para saber mais, confira Clientes estáticos.
  • Se a autenticação interna (também conhecida como Autenticação Fácil) for usada, a opção Somente HTTPS deverá ser habilitada para que o gatilho de aquecimento seja invocado.

Exemplo

A função C# pode ser criada por meio de um dos seguintes modos C#:

  • Modelo de trabalho isolado: função C# compilada executada em um processo de trabalho que está isolado do runtime. É necessário um processo de trabalho isolado para dar suporte às funções C# executadas nas versões LTS e não LTS do .NET e do .NET Framework.
  • Modelo em processo: função C# compilada no mesmo processo que o runtime do Functions.
  • Script C#: usado principalmente ao criar funções C# no portal do Azure.

O exemplo a seguir mostra uma função C# que é executada em cada nova instância quando adicionada ao aplicativo.

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace SampleApp
{
    public static class Warmup
    {
        [Function(nameof(Warmup))]
        public static void Run([WarmupTrigger] object warmupContext, FunctionContext context)
        {
            var logger = context.GetLogger(nameof(Warmup));
            logger.LogInformation("Function App instance is now warm!");
        }
    }
}

O exemplo a seguir mostra um gatilho de aquecimento que é executado quando cada nova instância é adicionada ao seu aplicativo.

@FunctionName("Warmup")
public void warmup( @WarmupTrigger Object warmupContext, ExecutionContext context) {
    context.getLogger().info("Function App instance is warm.");
}

O exemplo a seguir mostra uma função JavaScript com um gatilho de aquecimento que é executado em cada nova instância quando adicionado ao seu aplicativo:

const { app } = require('@azure/functions');

app.warmup('warmupTrigger', {
    handler: (warmupContext, context) => {
        context.log('Function App instance is warm.');
    },
});

O exemplo a seguir mostra uma função TypeScript com um gatilho de aquecimento que é executado em cada nova instância quando adicionado ao seu aplicativo:

import { app, InvocationContext, WarmupContext } from '@azure/functions';

export async function warmupFunction(warmupContext: WarmupContext, context: InvocationContext): Promise<void> {
    context.log('Function App instance is warm.');
}

app.warmup('warmup', {
    handler: warmupFunction,
});

Aqui está o arquivo function.json:

{
    "bindings": [
        {
            "type": "warmupTrigger",
            "direction": "in",
            "name": "warmupContext"
        }
    ]
}

Código de exemplo do PowerShell pendente.

O exemplo a seguir mostra um gatilho de aquecimento em um arquivo function.json e uma função Python que é executada em cada nova instância quando o gatilho é adicionado ao seu aplicativo.

A função precisa se chamar warmup (sem diferenciar maiúsculas de minúsculas), e pode haver apenas uma função de aquecimento por aplicativo.

Aqui está o arquivo function.json:

{
    "bindings": [
        {
            "type": "warmupTrigger",
            "direction": "in",
            "name": "warmupContext"
        }
    ]
}

Para obter mais informações, confira Configuração.

Aqui está o código Python:

import logging
import azure.functions as func


def main(warmupContext: func.Context) -> None:
    logging.info('Function App instance is warm.')

Atributos

As bibliotecas C# em processo e de processo de trabalho isolado usam o atributo WarmupTrigger para definir a função. Em vez disso, o script C# usa um arquivo de configuração function.json.

Use o atributo WarmupTrigger para definir a função. Esse atributo não tem parâmetros.

Anotações

Os gatilhos de aquecimento não exigem anotações. Basta usar um nome de warmup (sem diferenciação de maiúsculas e minúsculas) para a anotação FunctionName.

Configuração

Não há nenhuma propriedade que precise ser definida no objeto options transmitido para o método app.warmup().

Configuração

A tabela a seguir explica as propriedades de configuração de associação que você define no arquivo function.json.

Propriedade function.json Descrição
tipo Obrigatório – deve ser definido como warmupTrigger.
direction Obrigatório – deve ser definido como in.
name Obrigatório – o nome da variável usada no código de função. Um name de warmupContext é recomendado para o parâmetro de associação.

Consulte a Seção de exemplo para obter exemplos completos.

Uso

As seguintes considerações se aplicam ao uso de uma função de aquecimento em C#:

  • Sua função deve ser nomeada como warmup (sem diferenciação entre maiúsculas e minúsculas) usando o atributo Function.
  • Um atributo de valor de retorno não é necessário.
  • Usar o pacote Microsoft.Azure.Functions.Worker.Extensions.Warmup
  • Você pode passar uma instância de objeto para a função.

Sua função deve ser nomeada warmup (sem diferenciação de maiúsculas de minúsculas) usando a anotação FunctionName.

Confira a lista de considerações no início da página para ver recomendações gerais sobre uso.

O tipo de função em function.json deve ser definido como warmupTrigger.

Próximas etapas