Trigger timer in Funzioni di Azure

Questo articolo illustra come configurare trigger timer in Funzioni di Azure e su come scrivere il relativo codice. Funzioni di Azure è dotata di un binding trigger timer che consente di eseguire il codice della funzione secondo una pianificazione definita.

Il trigger timer supporta la scalabilità orizzontale a più istanze. Una singola istanza di una particolare funzione timer viene eseguita su tutte le istanze.

Informazioni di riferimento per gli sviluppatori delle Funzioni di Azure. Se non si ha familiarità con le Funzioni di Azure, iniziare con le seguenti risorse:

Trigger timer

Il trigger timer per una funzione usa l'oggetto JSON seguente nella matrice bindings di function.json:

{
    "schedule": "<CRON expression - see below>",
    "name": "<Name of trigger parameter in function signature>",
    "type": "timerTrigger",
    "direction": "in"
}

Il valore di schedule è un'espressione CRON che include i 6 campi seguenti:

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

 

Nota

In molte delle espressioni CRON disponibili online il campo {second} viene omesso. Se si copia da una di esse, è necessario apportare una modifica per il campo {second} aggiuntivo. Per esempi specifici, vedere Esempi di pianificazione di seguito.

Il fuso orario predefinito usato con le espressioni CRON è 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. Impostare il valore sul nome del fuso orario prescelto come illustrato nell'indice dei fusi orari di Microsoft.

Ad esempio, Ora solare fuso orientale (EST) è 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:

"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. La seguente espressione CRON può quindi essere usata per 10:00 EST:

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

Esempi di pianificazione

Di seguito sono riportati alcuni esempi di espressioni CRON che possibile usare per la proprietà schedule.

Per attivare una volta ogni 5 minuti:

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

Per attivare una volta all'inizio di ogni ora:

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

Per attivare una volta ogni 2 ore:

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

Per attivare una volta ogni ora dalle 9 alle 17:

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

Per attivare alle 9:30 ogni giorno:

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

Per attivare alle 9:30 ogni giorno feriale:

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

Utilizzo dei trigger

Quando viene richiamata una funzione di trigger timer, l'oggetto timer viene passato alla funzione. Il codice JSON seguente è una rappresentazione di esempio dell'oggetto timer.

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

Esempio di trigger

Si supponga che il trigger timer seguente sia presente nella matrice bindings di function.json:

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

Vedere l'esempio specifico del linguaggio che legge l'oggetto timer per verificare se viene eseguito in ritardo.

Esempio di trigger in C#

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 di trigger in F#

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 di trigger in Node.js

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

Passaggi successivi

Per informazioni su altre associazioni e altri trigger per Funzioni di Azure, vedere Guida di riferimento per gli sviluppatori di trigger e associazioni di Funzioni di Azure.