Trigger timer per Funzioni di AzureTimer trigger for Azure Functions

Questo articolo illustra come usare trigger timer in Funzioni di Azure.This article explains how to work with timer triggers in Azure Functions. Un trigger timer consente di eseguire una funzione in base a una pianificazione.A timer trigger lets you run a function on a schedule.

Informazioni di riferimento per gli sviluppatori delle Funzioni di Azure.This is reference information for Azure Functions developers. Se non si ha familiarità con le Funzioni di Azure, iniziare con le seguenti risorse:If you're new to Azure Functions, start with the following resources:

EsempioExample

Vedere l'esempio specifico per ciascun linguaggio:See the language-specific example:

Esempio in C#C# example

Nell'esempio seguente un funzione c# che viene eseguito ogni cinque minuti:The following example shows a C# function that runs every five minutes:

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, TraceWriter log)
{
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}

Esempio di script C#C# script example

L'esempio seguente mostra un'associazione di trigger timer in un file function.json e una funzione script C# che usa l'associazione.The following example shows a timer trigger binding in a function.json file and a C# script function that uses the binding. La funzione scrive un log che indica se la chiamata di funzione è dovuta un'occorrenza di pianificazione mancante.The function writes a log indicating whether this function invocation is due to a missed schedule occurrence.

Ecco i dati di associazione nel file function.json:Here's the binding data in the function.json file:

{
    "schedule": "0 */5 * * * *",
    "name": "myTimer",
    "type": "timerTrigger",
    "direction": "in"
}

Ecco il codice script C#:Here's the C# script code:

public static void Run(TimerInfo myTimer, TraceWriter log)
{
    if(myTimer.IsPastDue)
    {
        log.Info("Timer is running late!");
    }
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}" );  
}

Esempio F#F# example

L'esempio seguente mostra un'associazione di trigger timer in un file function.json e una funzione script F# che usa l'associazione.The following example shows a timer trigger binding in a function.json file and a F# script function that uses the binding. La funzione scrive un log che indica se la chiamata di funzione è dovuta un'occorrenza di pianificazione mancante.The function writes a log indicating whether this function invocation is due to a missed schedule occurrence.

Ecco i dati di associazione nel file function.json:Here's the binding data in the function.json file:

{
    "schedule": "0 */5 * * * *",
    "name": "myTimer",
    "type": "timerTrigger",
    "direction": "in"
}

Ecco il codice script F#:Here's the F# script code:

let Run(myTimer: TimerInfo, log: TraceWriter ) =
    if (myTimer.IsPastDue) then
        log.Info("F# function is running late.")
    let now = DateTime.Now.ToLongTimeString()
    log.Info(sprintf "F# function executed at %s!" now)

Esempio JavaScriptJavaScript example

L'esempio seguente mostra un'associazione di trigger timer in un file function.json e una funzione JavaScript che usa l'associazione.The following example shows a timer trigger binding in a function.json file and a JavaScript function that uses the binding. La funzione scrive un log che indica se la chiamata di funzione è dovuta un'occorrenza di pianificazione mancante.The function writes a log indicating whether this function invocation is due to a missed schedule occurrence.

Ecco i dati di associazione nel file function.json:Here's the binding data in the function.json file:

{
    "schedule": "0 */5 * * * *",
    "name": "myTimer",
    "type": "timerTrigger",
    "direction": "in"
}

Ecco il codice script JavaScript:Here's the JavaScript script code:

module.exports = function (context, myTimer) {
    var timeStamp = new Date().toISOString();

    if(myTimer.isPastDue)
    {
        context.log('Node.js is running late!');
    }
    context.log('Node.js timer trigger function ran!', timeStamp);   

    context.done();
};

AttributiAttributes

In librerie di classi c#, utilizzare il TimerTriggerAttribute, definito nel pacchetto NuGet Microsoft.Azure.WebJobs.Extensions.In C# class libraries, use the TimerTriggerAttribute, defined in NuGet package Microsoft.Azure.WebJobs.Extensions.

Il costruttore dell'attributo accetta un'espressione CRON, come illustrato nell'esempio seguente:The attribute's constructor takes a CRON expression, as shown in the following example:

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, TraceWriter log)
{
   ...
}

È possibile specificare un oggetto TimeSpan invece di un'espressione CRON se l'app per le funzioni viene eseguita in un piano di servizio app (non un piano a consumo).You can specify a TimeSpan instead of a CRON expression if your function app runs on an App Service plan (not a Consumption plan).

Per un esempio completo, vedere esempio c#.For a complete example, see C# example.

ConfigurazioneConfiguration

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json e nell'attributo TimerTrigger.The following table explains the binding configuration properties that you set in the function.json file and the TimerTrigger attribute.

Proprietà di function.jsonfunction.json property Proprietà dell'attributoAttribute property DESCRIZIONEDescription
typetype n/dn/a Il valore deve essere impostato su "timerTrigger".Must be set to "timerTrigger". Questa proprietà viene impostata automaticamente quando si crea il trigger nel portale di Azure.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/dn/a Il valore deve essere impostato su "in".Must be set to "in". Questa proprietà viene impostata automaticamente quando si crea il trigger nel portale di Azure.This property is set automatically when you create the trigger in the Azure portal.
nomename n/dn/a Nome della variabile che rappresenta l'oggetto timer nel codice della funzione.The name of the variable that represents the timer object in function code.
scheduleschedule ScheduleExpressionScheduleExpression Nel piano a consumo è possibile definire le pianificazioni con un'espressione CRON.On the Consumption plan, you can define schedules with a CRON expression. Se si usa un piano di servizio app, è anche possibile usare una stringa TimeSpan.If you're using an App Service Plan, you can also use a TimeSpan string. Le sezioni seguenti illustrano le espressioni CRON.The following sections explain CRON expressions. È possibile inserire l'espressione schedule in un'impostazione dell'app e impostare questa proprietà su un valore racchiuso tra simboli %, come in questo esempio: "%NomeImpostazioneAppConEspressioneCRON%".You can put the schedule expression in an app setting and set this property to a value wrapped in % signs, as in this example: "%NameOfAppSettingWithCRONExpression%".

Quando si sviluppa in locale, le impostazioni dell'app vengono inserite nel file local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Formato CRONCRON format

Un'espressione CRON per il trigger timer di Funzioni di Azure include questi sei campi:A CRON expression for the Azure Functions timer trigger includes these six fields:

{second} {minute} {hour} {day} {month} {day-of-week}

Nota

In molte delle espressioni CRON disponibili online il campo {second} viene omesso.Many of the CRON expressions you find online omit the {second} field. Se si copia una di queste espressioni, aggiungere il campo {second} mancante.If you copy from one of them, add the missing {second} field.

Fusi orari CRONCRON time zones

Il fuso orario predefinito usato con le espressioni CRON è Coordinated Universal Time (UTC).The default time zone used with the CRON expressions is Coordinated Universal Time (UTC). Per fare in modo che l'espressione CRON sia basata su un altro fuso orario, creare una nuova impostazione di app per l'app per le funzioni denominata WEBSITE_TIME_ZONE.To have your CRON expression based on another time zone, create a new app setting for your function app named WEBSITE_TIME_ZONE. Impostare il valore sul nome del fuso orario prescelto come illustrato nell'indice dei fusi orari di Microsoft.Set the value to the name of the desired time zone as shown in the Microsoft Time Zone Index.

Ad esempio, Ora solare fuso orientale (EST) è UTC-05:00.For example, Eastern Standard Time is UTC-05:00. Per attivare il timer trigger ogni giorno alle 10:00 EST, usare la seguente espressione CRON che rappresenta il fuso orario UTC:To have your timer trigger fire at 10:00 AM EST every day, use the following CRON expression that accounts for UTC time zone:

"schedule": "0 0 15 * * *",

In alternativa, è possibile aggiungere una nuova impostazione di app per l'app per le funzioni denominata WEBSITE_TIME_ZONE e impostare il valore su Ora solare fuso orientale.Alternatively, you could add a new app setting for your function app named WEBSITE_TIME_ZONE and set the value to Eastern Standard Time. La seguente espressione CRON può quindi essere usata per 10:00 EST:Then the following CRON expression could be used for 10:00 AM EST:

"schedule": "0 0 10 * * *",

Esempi CRONCRON examples

Ecco alcuni esempi di espressioni CRON che è possibile usare per il trigger timer in Funzioni di Azure.Here are some examples of CRON expressions you can use for the timer trigger in Azure Functions.

Per attivare una volta ogni 5 minuti:To trigger once every five minutes:

"schedule": "0 */5 * * * *"

Per attivare una volta all'inizio di ogni ora:To trigger once at the top of every hour:

"schedule": "0 0 * * * *",

Per attivare una volta ogni 2 ore:To trigger once every two hours:

"schedule": "0 0 */2 * * *",

Per attivare una volta ogni ora dalle 9 alle 17:To trigger once every hour from 9 AM to 5 PM:

"schedule": "0 0 9-17 * * *",

Per attivare alle 9:30 ogni giorno:To trigger At 9:30 AM every day:

"schedule": "0 30 9 * * *",

Per attivare alle 9:30 ogni giorno feriale:To trigger At 9:30 AM every weekday:

"schedule": "0 30 9 * * 1-5",

UsoUsage

Quando viene richiamata una funzione di trigger timer, l'oggetto timer viene passato alla funzione.When a timer trigger function is invoked, the timer object is passed into the function. Il codice JSON seguente è una rappresentazione di esempio dell'oggetto timer.The following JSON is an example representation of the timer object.

{
    "Schedule":{
    },
    "ScheduleStatus": {
        "Last":"2016-10-04T10:15:00.012699+00:00",
        "Next":"2016-10-04T10:20:00+00:00"
    },
    "IsPastDue":false
}

Scalabilità orizzontaleScale-out

Il trigger timer supporta la scalabilità orizzontale a più istanze. Una singola istanza di una particolare funzione timer viene eseguita su tutte le istanze.The timer trigger supports multi-instance scale-out. A single instance of a particular timer function is run across all instances.

Passaggi successiviNext steps