Delen via


Azure Functions-opwarmtrigger

In dit artikel wordt uitgelegd hoe u kunt werken met de opwarmtrigger in Azure Functions. Er wordt een opwarmtrigger aangeroepen wanneer een exemplaar wordt toegevoegd om een actieve functie-app te schalen. Met de opwarmtrigger kunt u een functie definiëren die wordt uitgevoerd wanneer een nieuw exemplaar van uw functie-app wordt gestart. U kunt een opwarmtrigger gebruiken om aangepaste afhankelijkheden vooraf te laden, zodat uw functies klaar zijn om aanvragen onmiddellijk te verwerken. Sommige acties voor een opwarmtrigger kunnen bestaan uit het openen van verbindingen, het laden van afhankelijkheden of het uitvoeren van andere aangepaste logica voordat uw app verkeer ontvangt.

De volgende overwegingen zijn van toepassing bij het gebruik van een opwarmtrigger:

  • De opwarmtrigger is niet beschikbaar voor apps die worden uitgevoerd in het verbruiksabonnement.
  • De opwarmtrigger wordt niet ondersteund op versie 1.x van de Functions-runtime.
  • Ondersteuning voor de opwarmtrigger wordt standaard geboden in alle ontwikkelomgevingen. U hoeft het pakket niet handmatig te installeren of de uitbreiding te registreren.
  • Er kan slechts één opwarm-triggerfunctie per functie-app zijn en deze kan niet worden aangeroepen nadat het exemplaar al wordt uitgevoerd.
  • De opwarmtrigger wordt alleen aangeroepen tijdens uitschaalbewerkingen, niet tijdens herstarts of andere start-ups zonder schaalaanpassing. Zorg ervoor dat uw logica alle vereiste afhankelijkheden kan laden zonder afhankelijk te zijn van de opwarmtrigger. Lui laden is een goed patroon om dit doel te bereiken.
  • Afhankelijkheden die zijn gemaakt door een opwarmtrigger, moeten worden gedeeld met andere functies in uw app. Zie Statische clients voor meer informatie.
  • Als de ingebouwde verificatie (ook wel Easy Auth genoemd) wordt gebruikt, moet HTTPS alleen worden ingeschakeld voor de opwarmtrigger om aan te roepen.

Opmerking

U kunt een C#-functie maken met behulp van een van de volgende C#-modi:

  • Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime.
  • C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.

In het volgende voorbeeld ziet u een C#-functie die wordt uitgevoerd op elk nieuw exemplaar wanneer deze wordt toegevoegd aan uw 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!");
        }
    }
}

In het volgende voorbeeld ziet u een opwarmtrigger die wordt uitgevoerd wanneer elk nieuw exemplaar wordt toegevoegd aan uw app.

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

In het volgende voorbeeld ziet u een JavaScript-functie met een opwarmtrigger die wordt uitgevoerd op elk nieuw exemplaar wanneer deze wordt toegevoegd aan uw app:

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

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

In het volgende voorbeeld ziet u een TypeScript-functie met een opwarmtrigger die wordt uitgevoerd op elk nieuw exemplaar wanneer deze wordt toegevoegd aan uw 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,
});

Dit is het bestand function.json :

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

PowerShell-voorbeeldcode in behandeling.

In het volgende voorbeeld ziet u een opwarmtrigger in een function.json-bestand en een Python-functie die wordt uitgevoerd op elk nieuw exemplaar wanneer deze wordt toegevoegd aan uw app.

Uw functie moet een naam warmup hebben (hoofdlettergevoelig) en er kan slechts één opwarmfunctie per app zijn.

Dit is het bestand function.json :

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

Zie Configuratie voor meer informatie.

Dit is de Python-code:

import logging
import azure.functions as func


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

Kenmerken

Zowel in-process als geïsoleerde werkproces C#-bibliotheken gebruiken het WarmupTrigger kenmerk om de functie te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand.

Gebruik het WarmupTrigger kenmerk om de functie te definiëren. Dit kenmerk heeft geen parameters.

Aantekeningen

Voor opwarmtriggers zijn geen aantekeningen vereist. Gebruik een naam van warmup (hoofdlettergevoelig) voor de FunctionName aantekening.

Configuratie

Er zijn geen eigenschappen die moeten worden ingesteld voor het options object dat aan de app.warmup() methode is doorgegeven.

Configuratie

In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.

function.json-eigenschap Beschrijving
type Vereist - moet worden ingesteld op warmupTrigger.
direction Vereist - moet worden ingesteld op in.
name Vereist: de naam van de variabele die wordt gebruikt in functiecode. Een name van warmupContext wordt aanbevolen voor de bindingsparameter.

Zie de sectie Voorbeeld voor volledige voorbeelden.

Gebruik

De volgende overwegingen zijn van toepassing op het gebruik van een opwarmfunctie in C#:

  • Uw functie moet een naam warmup hebben (hoofdlettergevoelig) met behulp van het Function kenmerk.
  • Er is geen kenmerk voor een retourwaarde vereist.
  • Microsoft.Azure.Functions.Worker.Extensions.Warmup Het pakket gebruiken
  • U kunt een objectexemplaren doorgeven aan de functie.

Uw functie moet een naam warmup hebben (hoofdlettergevoelig) met behulp van de FunctionName aantekening.

Zie de lijst met overwegingen bovenaan de pagina voor algemeen gebruiksadvies.

Het functietype in function.json moet worden ingesteld op warmupTrigger.

Volgende stappen