Azure Functions-uppvärmningsutlösare

Den här artikeln beskriver hur du arbetar med uppvärmningsutlösaren i Azure Functions. En uppvärmningsutlösare anropas när en instans läggs till för att skala en funktionsapp som körs. Med uppvärmningsutlösaren kan du definiera en funktion som körs när en ny instans av funktionsappen startas. Du kan använda en uppvärmningsutlösare för att förinstallera anpassade beroenden så att dina funktioner är redo att börja bearbeta begäranden omedelbart. Vissa åtgärder för en uppvärmningsutlösare kan vara att öppna anslutningar, läsa in beroenden eller köra annan anpassad logik innan appen börjar ta emot trafik.

Följande överväganden gäller när du använder en uppvärmningsutlösare:

  • Uppvärmningsutlösaren är inte tillgänglig för appar som körs i förbrukningsplanen.
  • Uppvärmningsutlösaren stöds inte på version 1.x av Functions-körningen.
  • Stöd för uppvärmningsutlösaren tillhandahålls som standard i alla utvecklingsmiljöer. Du behöver inte installera paketet manuellt eller registrera tillägget.
  • Det kan bara finnas en funktion för uppvärmningsutlösare per funktionsapp och den kan inte anropas när instansen redan har körts.
  • Uppvärmningsutlösaren anropas endast under utskalningsåtgärder, inte under omstarter eller andra icke-skalningsstarter. Kontrollera att logiken kan läsa in alla nödvändiga beroenden utan att behöva använda uppvärmningsutlösaren. Lazy loading är ett bra mönster för att uppnå det här målet.
  • Beroenden som skapas av en uppvärmningsutlösare ska delas med andra funktioner i din app. Mer information finns i Statiska klienter.
  • Om den inbyggda autentiseringen(även kallad Easy Auth) används bör ENDAST HTTPS aktiveras för att uppvärmningsutlösaren ska anropas.

Exempel

En C#-funktion kan skapas med något av följande C#-lägen:

  • Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework.
  • Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen.
  • C#-skript: Används främst när du skapar C#-funktioner i Azure-portalen.

I följande exempel visas en C#-funktion som körs på varje ny instans när den läggs till i din 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!");
        }
    }
}

I följande exempel visas en uppvärmningsutlösare som körs när varje ny instans läggs till i din app.

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

I följande exempel visas en JavaScript-funktion med en uppvärmningsutlösare som körs på varje ny instans när den läggs till i din app:

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

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

I följande exempel visas en TypeScript-funktion med en uppvärmningsutlösare som körs på varje ny instans när den läggs till i din 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,
});

Här är den function.json filen:

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

PowerShell-exempelkod väntar.

I följande exempel visas en uppvärmningsutlösare i en function.json-fil och en Python-funktion som körs på varje ny instans när den läggs till i din app.

Funktionen måste ha namnet warmup (skiftlägesokänslig) och det kan bara finnas en uppvärmningsfunktion per app.

Här är den function.json filen:

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

Mer information finns i Konfiguration.

Här är Python-koden:

import logging
import azure.functions as func


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

Attribut

C#-bibliotek för både process- och isolerad arbetsprocess använder attributet för att definiera WarmupTrigger funktionen. C#-skriptet använder i stället en function.json konfigurationsfil.

Använd attributet WarmupTrigger för att definiera funktionen. Det här attributet har inga parametrar.

Kommentarer

Uppvärmningsutlösare kräver inte anteckningar. Använd bara namnet warmup (skiftlägesokänsligt) för anteckningen FunctionName .

Konfiguration

Det finns inga egenskaper som behöver anges för objektet options som skickas app.warmup() till metoden.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .

function.json egenskap beskrivning
typ Obligatoriskt – måste anges till warmupTrigger.
riktning Obligatoriskt – måste anges till in.
Namn Obligatoriskt – variabelnamnet som används i funktionskoden. En name av warmupContext rekommenderas för bindningsparametern.

Se avsnittet Exempel för fullständiga exempel.

Användning

Följande överväganden gäller för användning av en uppvärmningsfunktion i C#:

  • Funktionen måste namnges warmup (skiftlägesokänslig) med hjälp av attributet Function .
  • Ett returvärdesattribut krävs inte.
  • Microsoft.Azure.Functions.Worker.Extensions.Warmup Använda paketet
  • Du kan skicka en objektinstans till funktionen.

Funktionen måste namnges warmup (skiftlägesokänslig) med anteckningen FunctionName .

Se listan över överväganden överst på sidan för allmänna användningsråd.

Funktionstypen i function.json måste vara inställd på warmupTrigger.

Nästa steg