Sdílet prostřednictvím


Trigger pro přípravu služby Azure Functions

Tento článek vysvětluje, jak pracovat s triggerem warmup ve službě Azure Functions. Aktivační událost warmup se vyvolá při přidání instance pro škálování spuštěné aplikace funkcí. Trigger warmup umožňuje definovat funkci, která se spustí při spuštění nové instance vaší aplikace funkcí. Trigger pro přípravu můžete použít k předběžnému načtení vlastních závislostí, aby vaše funkce byly připraveny okamžitě začít zpracovávat požadavky. Některé akce triggeru pro přípravu můžou zahrnovat otevírání připojení, načítání závislostí nebo spouštění jakékoli jiné vlastní logiky před tím, než vaše aplikace začne přijímat provoz.

Při použití triggeru warmup platí následující aspekty:

  • Aktivační událost pro přípravu není dostupná pro aplikace spuštěné v plánu Consumption.
  • Aktivační událost warmup není podporována ve verzi 1.x modulu runtime Služby Functions.
  • Podpora triggeru pro přípravu je ve výchozím nastavení poskytována ve všech vývojových prostředích. Balíček nemusíte instalovat ručně ani registrovat rozšíření.
  • Pro každou aplikaci funkcí může existovat jenom jedna funkce triggeru pro přípravu a po spuštění instance ji nelze vyvolat.
  • Aktivační událost pro přípravu se volá pouze během operací horizontálního navýšení kapacity, ne během restartování nebo jiných nesvícených spuštění. Ujistěte se, že logika může načíst všechny požadované závislosti, aniž byste se museli spoléhat na aktivační událost pro přípravu. Opožděné načítání je dobrým vzorem pro dosažení tohoto cíle.
  • Závislosti vytvořené triggerem warmup by se měly sdílet s dalšími funkcemi ve vaší aplikaci. Další informace najdete v tématu Statické klienty.
  • Pokud se používá integrované ověřování (označované také jako Easy Auth), mělo by být povolené jenom https pro vyvolání triggeru pro přípravu.

Příklad

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

  • Izolovaný model pracovního procesu: Kompilovaná funkce jazyka C#, která běží v pracovním procesu, který je izolovaný od modulu runtime. Izolovaný pracovní proces je nutný pro podporu funkcí C# spuštěných na LTS a jiných verzích než LTS .NET a rozhraní .NET Framework.
  • Model v procesu: Zkompilovaná funkce jazyka C#, která běží ve stejném procesu jako modul runtime služby Functions.
  • Skript jazyka C#: Používá se především při vytváření funkcí jazyka C# na webu Azure Portal.

Následující příklad ukazuje funkci jazyka C#, která se při přidání do aplikace spouští na každé nové instanci.

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

Následující příklad ukazuje aktivační událost pro přípravu, která se spustí při přidání každé nové instance do vaší aplikace.

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

Následující příklad ukazuje funkci JavaScriptu s aktivační událostí pro přípravu, která se spustí v každé nové instanci při přidání do vaší aplikace:

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

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

Následující příklad ukazuje funkci TypeScript s triggerem zahřátí, který se spustí na každé nové instanci při přidání do vaší aplikace:

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

Tady je soubor function.json :

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

Ukázkový kód PowerShellu čeká na vyřízení.

Následující příklad ukazuje trigger zahřátí v souboru function.json a funkci Pythonu, která se spouští na každé nové instanci, když se přidá do vaší aplikace.

Vaše funkce musí mít název warmup (nerozlišující malá a velká písmena) a pro každou aplikaci může existovat jenom jedna funkce pro přípravu.

Tady je soubor function.json :

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

Další informace najdete v tématu Konfigurace.

Tady je kód Pythonu:

import logging
import azure.functions as func


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

Atributy

Knihovny C# v procesu i izolovaného pracovního procesu používají WarmupTrigger atribut k definování funkce. Skript jazyka C# místo toho používá konfigurační soubor function.json.

Pomocí atributu WarmupTrigger definujte funkci. Tento atribut nemá žádné parametry.

Poznámky

Aktivační události pro přípravu nevyžadují poznámky. Stačí pro poznámku FunctionName použít název warmup nerozlišující velká a malá písmena.

Konfigurace

Pro objekt předaný metodě app.warmup() není nutné nastavit options žádné vlastnosti.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json .

vlastnost function.json Popis
type Povinné – musí být nastaveno na warmupTriggerhodnotu .
direction Povinné – musí být nastaveno na inhodnotu .
Jméno Povinný argument – název proměnné použité v kódu funkce. warmupContext Parametr name vazby se doporučuje.

Kompletní příklady najdete v části Příklad.

Využití

Pro použití funkce warmup v jazyce C#platí následující aspekty:

  • Vaše funkce musí být pojmenovaná warmup (nerozlišují malá a velká písmena) pomocí atributu Function .
  • Atribut návratové hodnoty není povinný.
  • Microsoft.Azure.Functions.Worker.Extensions.Warmup Použití balíčku
  • Do funkce můžete předat instanci objektu.

Vaše funkce musí být pojmenovaná warmup (nerozlišují malá a velká písmena) pomocí poznámky FunctionName .

Podívejte se na seznam důležitých informací v horní části stránky, kde najdete obecné rady k používání.

Typ funkce v function.json musí být nastaven na warmupTriggerhodnotu .

Další kroky