Funzioni di Azure trigger di riscaldamento

Questo articolo illustra come usare il trigger di riscaldamento in Funzioni di Azure. Un trigger di riscaldamento viene richiamato quando viene aggiunta un'istanza per ridimensionare un'app per le funzioni in esecuzione. Il trigger di riscaldamento consente di definire una funzione che viene eseguita quando viene avviata una nuova istanza dell'app per le funzioni. È possibile usare un trigger di riscaldamento per precaricare dipendenze personalizzate in modo che le funzioni siano pronte per avviare immediatamente l'elaborazione delle richieste. Alcune azioni per un trigger di riscaldamento possono includere l'apertura di connessioni, il caricamento delle dipendenze o l'esecuzione di qualsiasi altra logica personalizzata prima che l'app inizi a ricevere traffico.

Quando si usa un trigger di riscaldamento, si applicano le considerazioni seguenti:

  • Il trigger di riscaldamento non è disponibile per le app in esecuzione nel piano a consumo.
  • Il trigger di riscaldamento non è supportato nella versione 1.x del runtime di Funzioni.
  • Il supporto per il trigger di riscaldamento viene fornito per impostazione predefinita in tutti gli ambienti di sviluppo. Non è necessario installare il pacchetto o registrare l'estensione manualmente.
  • Può essere presente una sola funzione trigger di riscaldamento per ogni app per le funzioni e non può essere richiamata dopo che l'istanza è già in esecuzione.
  • Il trigger di riscaldamento viene chiamato solo durante le operazioni di scalabilità orizzontale, non durante i riavvii o altre startup non scalabili. Assicurarsi che la logica possa caricare tutte le dipendenze necessarie senza basarsi sul trigger di riscaldamento. Il caricamento differita è un buon modello per raggiungere questo obiettivo.
  • Le dipendenze create dal trigger di riscaldamento devono essere condivise con altre funzioni nell'app. Per altre informazioni, vedere Client statici.
  • Se viene usata l'autenticazione predefinita (nota anche come Easy Auth), è necessario abilitare solo HTTPS per il trigger di riscaldamento per essere richiamato.

Esempio

È possibile creare una funzione C# usando una delle modalità C# seguenti:

  • Modello di lavoro isolato: funzione C# compilata eseguita in un processo di lavoro isolato dal runtime. Il processo di lavoro isolato è necessario per supportare le funzioni C# in esecuzione in LTS e versioni non LTS .NET e .NET Framework.
  • Modello in-process: funzione C# compilata eseguita nello stesso processo del runtime di Funzioni.
  • Script C#: usato principalmente quando si creano funzioni C# nel portale di Azure.

L'esempio seguente illustra una funzione C# che viene eseguita in ogni nuova istanza quando viene aggiunta all'app.

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!");
        }
    }
}

L'esempio seguente mostra un trigger di riscaldamento che viene eseguito quando ogni nuova istanza viene aggiunta all'app.

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

L'esempio seguente mostra una funzione JavaScript con un trigger di riscaldamento eseguito in ogni nuova istanza quando viene aggiunto all'app:

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

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

L'esempio seguente mostra una funzione TypeScript con un trigger di riscaldamento eseguito in ogni nuova istanza quando viene aggiunto all'app:

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,
});

Ecco il file function.json:

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

Codice di esempio di PowerShell in sospeso.

L'esempio seguente mostra un trigger di riscaldamento in un file function.json e una funzione Python eseguita in ogni nuova istanza quando viene aggiunta all'app.

La funzione deve essere denominata warmup (senza distinzione tra maiuscole e minuscole) e può esistere una sola funzione di riscaldamento per ogni app.

Ecco il file function.json:

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

Per altre informazioni, vedere Configurazione.

Ecco il codice Python:

import logging
import azure.functions as func


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

Attributi

Sia le librerie C# in-process che il processo di lavoro isolato usano l'attributo WarmupTrigger per definire la funzione. Lo script C# usa invece un file di configurazione function.json.

Usare l'attributo WarmupTrigger per definire la funzione. Questo attributo non ha parametri.

Annotazioni

I trigger di riscaldamento non richiedono annotazioni. Usare semplicemente un nome ( warmup senza distinzione tra maiuscole e minuscole) per l'annotazione FunctionName .

Impostazione

Non è necessario impostare proprietà sull'oggetto options passato al app.warmup() metodo .

Impostazione

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.

Proprietà di function.json Descrizione
type Obbligatoria. Deve essere impostata su warmupTrigger.
direction Obbligatoria. Deve essere impostata su in.
name Obbligatorio: nome della variabile usato nel codice della funzione. È name consigliabile un di warmupContext per il parametro di associazione.

Per esempi completi, vedere la sezione di esempio.

Utilizzo

Le considerazioni seguenti si applicano all'uso di una funzione di riscaldamento in C#:

  • La funzione deve essere denominata warmup (senza distinzione tra maiuscole e minuscole) usando l'attributo Function .
  • Un attributo valore restituito non è obbligatorio.
  • Usare il pacchetto Microsoft.Azure.Functions.Worker.Extensions.Warmup
  • È possibile passare un'istanza dell'oggetto alla funzione .

La funzione deve essere denominata warmup (senza distinzione tra maiuscole e minuscole) usando l'annotazione FunctionName .

Per consigli generali sull'utilizzo, vedere l'elenco delle considerazioni nella parte superiore della pagina.

Il tipo di funzione in function.json deve essere impostato su warmupTrigger.

Passaggi successivi