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.
Importante
O suporte terminará para o modelo em processo em 10 de novembro de 2026. É altamente recomendável migrar seus aplicativos para o modelo de trabalho isolado para obter suporte completo.
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
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 atributoFunction
. - 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
.
O tipo de função em function.json deve ser definido como warmupTrigger
.