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ção em execução. O gatilho de aquecimento permite definir uma função que é executada quando uma nova instância do seu aplicativo de função é iniciada. Você pode usar um gatilho de aquecimento para pré-carregar dependências personalizadas para que suas funções estejam prontas para começar a processar solicitações imediatamente. Algumas ações para um gatilho de aquecimento podem incluir abrir conexões, carregar dependências ou executar 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 executados no plano de consumo.
- O gatilho de aquecimento não é suportado na versão 1.x do tempo de execução do Functions.
- O suporte para o gatilho de aquecimento é fornecido por padrão em todos os ambientes de desenvolvimento. Não é necessário instalar manualmente o pacote ou registrar a extensão.
- Pode haver apenas uma função de gatilho de aquecimento por aplicativo de função e ela não pode ser invocada depois que a instância já estiver em execução.
- O gatilho de aquecimento só é chamado durante operações de expansão, não durante reinicializações ou outras inicializações sem escala. Certifique-se de que sua lógica possa carregar todas as dependências necessárias sem depender do gatilho de aquecimento. O carregamento preguiçoso é um bom padrão para atingir este objetivo.
- As dependências criadas pelo gatilho de aquecimento devem ser compartilhadas com outras funções em seu aplicativo. Para saber mais, consulte Clientes estáticos.
- Se a autenticação interna (também conhecida como Easy Auth) for usada, HTTPS Only deverá ser habilitado para que o gatilho de aquecimento seja invocado.
Exemplo
Uma função C# pode ser criada usando um dos seguintes modos C#:
- Modelo de trabalho isolado: função C# compilada que é executada em um processo de trabalho isolado do tempo de execução. O processo de trabalho isolado é necessário para suportar funções C# em execução nas versões LTS e não-LTS .NET e .NET Framework.
- Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Functions.
- Script C#: usado principalmente quando você cria funções C# no portal do Azure.
Importante
O suporte para o modelo em processo terminará em 10 de novembro de 2026. É altamente recomendável que você migre seus aplicativos para o modelo de trabalho isolado para obter suporte total.
O exemplo a seguir mostra uma função C# que é executada em cada nova instância quando adicionada ao seu 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 adicionada 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 adicionada 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 é adicionada ao seu aplicativo.
Sua função deve ser nomeada warmup
(não diferencia maiúsculas de minúsculas) e só pode haver 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, consulte 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# de processo de trabalho em processo e isoladas usam o WarmupTrigger
atributo para definir a função. Em vez disso, o script C# usa um arquivo de configuração function.json.
Use o WarmupTrigger
atributo para definir a função. Este atributo não tem parâmetros.
Anotações
Os gatilhos de aquecimento não exigem anotações. Basta usar um nome de (sem distinção entre maiúsculas e warmup
minúsculas) para a FunctionName
anotação.
Configuração
Configuração
A tabela a seguir explica as propriedades de configuração de associação definidas no arquivo function.json .
function.json propriedade | Description |
---|---|
type | Obrigatório - deve ser definido como warmupTrigger . |
direção | Obrigatório - deve ser definido como in . |
Designação | Obrigatório - o nome da variável usada no código da função. A name de é recomendado para o parâmetro de warmupContext ligação. |
Consulte a seção Exemplo para obter exemplos completos.
Utilização
As seguintes considerações se aplicam ao uso de uma função de aquecimento em C#:
- Sua função deve ser nomeada
warmup
(não diferencia maiúsculas de minúsculas) usando oFunction
atributo. - Um atributo de valor de retorno não é necessário.
- Utilize a
Microsoft.Azure.Functions.Worker.Extensions.Warmup
embalagem - Você pode passar uma instância de objeto para a função.
Sua função deve ser nomeada warmup
(sem distinção entre maiúsculas e minúsculas) usando a FunctionName
anotação.
O tipo de função em function.json deve ser definido como warmupTrigger
.