J'essaie de comprendre le drapeau IsPastDue.

J'ai écrit la fonction suivante pour tenter de la simuler.

[FunctionName("Function1")]
public static void Run([TimerTrigger("*/30 * * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation($"$Custom$C# Timer trigger was delayed at: {DateTime.Now}");
    }
    else
    {
        log.LogInformation($"$Custom$C# Timer trigger function started at: {DateTime.Now}");
        Thread.Sleep(45000);
        log.LogInformation($"$Custom$C# Timer trigger function ended at: {DateTime.Now}");
    }
}

Les journaux résultants sont :

  • 2020-11-05T11:17:00.984 [Information] Exécution de 'Function1' (Raison='Timer déclenché au 2020-11-05T11:17:00.9844456+00:00', Id=0080629c-8b23-4c64-ab2b-233e389115c0)
  • 2020-11-05T11:17:00.985 [Information] $Custom$C# La fonction de déclenchement de la minuterie a commencé à : 11/5/2020 11:17:00 AM
  • 2020-11-05T11:17:45.991 [Information] $Custom$C# La fonction de déclenchement de la minuterie s'est terminée à : 11/5/2020 11:17:45 AM
  • 2020-11-05T11:17:45.991 [Information] Exécuté 'Function1' (Réussi, Id=0080629c-8b23-4c64-ab2b-233e389115c0, Durée=45007ms)
  • 2020-11-05T11:17:46.006 [Information] Exécution de 'Function1' (Raison='Timer déclenché au 2020-11-05T11:17:46.0066396+00:00', Id=94521af2-c5ef-49d9-bb05-14e54581d3f8)
  • 2020-11-05T11:17:46.007 [Information] $Custom$C# La fonction de déclenchement de la minuterie a commencé à : 11/5/2020 11:17:46 AM
  • 2020-11-05T11:18:31.015 [Information] $Custom$C# La fonction de déclenchement de la minuterie s'est terminée à : 11/5/2020 11:18:31 AM
  • 2020-11-05T11:18:31.016 [Information] Exécuté 'Function1' (Réussi, Id=94521af2-c5ef-49d9-bb05-14e54581d3f8, Durée=45009ms)
  • 2020-11-05T11:18:31.031 [Information] Exécution de 'Function1' (Raison='Timer déclenché au 2020-11-05T11:18:31.0312837+00:00', Id=aaae053a-5d91-4d8e-bd1b-99cec8813eec)
  • 2020-11-05T11:18:31.032 [Information] La fonction de déclenchement de la minuterie $Custom$C# a commencé à : 11/5/2020 11:18:31 AM
  • 2020-11-05T11:19:16.045 [Information] $Custom$C# La fonction de déclenchement de la minuterie s'est terminée à : 11/5/2020 11:19:16 AM
  • 2020-11-05T11:19:16.046 [Information] Exécuté 'Function1' (Réussi, Id=aaae053a-5d91-4d8e-bd1b-99cec8813eec, Durée=45015ms)
  • 2020-11-05T11:19:16.062 [Information] Exécution de 'Function1' (Raison='Timer déclenché au 2020-11-05T11:19:16.0624948+00:00', Id=a00c778f-a64c-4f87-a4c3-d523100204cb)
  • 2020-11-05T11:19:16.063 [Information] $Custom$C# La fonction de déclenchement de la minuterie a commencé à : 11/5/2020 11:19:16 AM
  • 2020-11-05T11:20:01.073 [Information] $Custom$C# La fonction de déclenchement de la minuterie s'est terminée à : 11/5/2020 11:20:01 AM
  • 2020-11-05T11:20:01.074 [Information] Exécuté 'Function1' (Réussi, Id=a00c778f-a64c-4f87-a4c3-d523100204cb, Durée=45012ms)
  • 2020-11-05T11:20:01.089 [Information] Exécution de 'Function1' (Raison='Timer déclenché au 2020-11-05T11:20:01.0890795+00:00', Id=37ad85ca-a0c0-4b7d-a39e-f9a42a5bca77)
  • 2020-11-05T11:20:01.090 [Information] La fonction de déclenchement de la minuterie $Custom$C# a commencé à : 11/5/2020 11:20:01 AM
  • 2020-11-05T11:20:46.094 [Information] $Custom$C# La fonction de déclenchement de la minuterie s'est terminée à : 11/5/2020 11:20:46 AM
  • 2020-11-05T11:20:46.095 [Information] Exécuté 'Function1' (Réussi, Id=37ad85ca-a0c0-4b7d-a39e-f9a42a5bca77, Durée=45005ms)
  • 2020-11-05T11:20:46.110 [Information] Exécution de 'Function1' (Raison='Timer déclenché au 2020-11-05T11:20:46.1101441+00:00', Id=bd3e21a2-f574-4c8b-834b-bdcf19e67d20)
  • 2020-11-05T11:20:46.110 [Information] $Custom$C# La fonction de déclenchement de la minuterie a commencé à : 11/5/2020 11:20:46 AM

L'indicateur IsPastDue n'est jamais défini sur true. Quand est-il défini sur vrai ?

0
CristisS 5 nov. 2020 à 14:39

1 réponse

Meilleure réponse

La propriété isPastDue est true lorsque l'appel de la fonction en cours est plus tard que prévu. Par exemple, une application de fonction restart peut entraîner l'omission d'un appel. Ici est le document officiel à ce sujet.

Vous pouvez essayer de le reproduire par run the function -> stop the function -> re-run the function dans Visual Studio localement. Mais ce n'est pas 100% repro. Je l'ai essayé plus de 10 fois, cela ne se produit qu'une seule fois. Voici la capture d'écran lorsque isPastDue est true dans mon test :

enter image description here

0
Ivan Yang 6 nov. 2020 à 08:07