J'ai quelques fonctions Azure en C# qui s'exécutent selon un calendrier en utilisant la méthode suivante déclenchements de la minuterie . Je les ai mis en place comme ça, où %TimerSchedule%
fait référence à une expression cron dans les paramètres de l'application :
public static void Run([TimerTrigger("%TimerSchedule%")]TimerInfo myTimer, TraceWriter log)
Pendant le développement, je souhaite souvent exécuter les fonctions localement à l'aide d'Azure Functions Tools for Visual Studio + Azure Functions Core Tools. Mais lorsque j'appuie sur F5 pour déboguer la fonction localement, elle ne s'exécute (généralement) pas immédiatement. Au lieu de cela, elle commence à attendre la prochaine occurrence selon la planification de la minuterie. Ainsi, par exemple, si mon expression cron indique qu'elle doit s'exécuter tous les jours à 20 heures, je dois attendre 20 heures pour que la fonction s'exécute réellement sur ma machine.
Donc ma question est : Quel est le moyen le plus simple et le plus efficace pour qu'une fonction soit exécutée une fois en local ?
Des choses que j'ai essayées ou envisagées :
- Utilisez un horaire plus fréquent pour le développement local.
- C'est correct mais pas parfait - vous devez toujours attendre un peu, sauf si c'est très fréquent, et si c'est très fréquent, la fonction peut s'exécuter plusieurs fois. C'est ce que je fais maintenant.
- Écrivez une application console ou un test unitaire qui appelle directement la fonction
Run()
méthode- Ce n'est pas simple à 100% car vous devez fournir
TimerInfo
etTraceWriter
arguments pourRun()
- et j'ai trouvé étonnamment peu de documentation à ce sujet.
- Ce n'est pas simple à 100% car vous devez fournir
Microsoft Stratégies pour tester votre code dans Azure Functions n'est pas très utile à ce sujet - elle ne mentionne que les déclencheurs de minuterie comme moyen de tester la qualité de l'eau. autre les types de déclenchement.
Dans un monde parfait, j'appuierais sur F5 et la fonction s'exécuterait immédiatement une fois - comme pour le développement d'une application .NET "normale".