Ich habe einige C # Azure-Funktionen, die nach einem Zeitplan mit Timer-Triggern ausgeführt werden . Ich habe sie so eingerichtet, wobei %TimerSchedule%
auf einen Cron-Ausdruck in den App-Einstellungen verwiesen wird:
public static void Run([TimerTrigger("%TimerSchedule%")]TimerInfo myTimer, TraceWriter log)
Während der Entwicklung möchte ich die Funktionen häufig lokal mit den Azure-Funktionstools für Visual Studio + Azure-Funktionen-Kerntools ausführen. Aber wenn ich F5 drücke, um die Funktion lokal zu debuggen, wird sie (normalerweise) nicht sofort ausgeführt. Stattdessen wird gemäß dem Timer-Zeitplan auf das nächste Auftreten gewartet. Wenn mein Cron-Ausdruck beispielsweise sagt, dass er täglich um 20 Uhr ausgeführt werden soll, muss ich bis 20 Uhr warten, bis die Funktion tatsächlich auf meinem Computer ausgeführt wird.
Meine Frage lautet also: Was ist der einfachste und beste Weg, um eine Funktion einmal lokal auszuführen?
Dinge, die ich versucht oder in Betracht gezogen habe:
- Verwenden Sie einen häufigeren Timer-Zeitplan nur für die lokale Entwicklung
- Dies ist in Ordnung, aber nicht perfekt. Sie müssen immer noch ein wenig warten, es sei denn, es ist sehr häufig. Wenn es sehr häufig ist, wird die Funktion möglicherweise mehrmals ausgeführt. Das mache ich jetzt.
- Schreiben Sie eine Konsolen-App oder einen Komponententest, der die
Run()
Methode der Funktion direkt aufruft- Dies ist nicht zu 100% einfach , weil Sie zu bieten haben
TimerInfo
undTraceWriter
Argumente zuRun()
- und ich habe überraschend wenig Dokumentation dafür gefunden.
- Dies ist nicht zu 100% einfach , weil Sie zu bieten haben
Die Strategien von Microsoft zum Testen Ihres Codes auf der Seite " Azure-Funktionen " sind in diesem Thema nicht sehr hilfreich. Sie erwähnen nur Timer-Trigger, um andere Triggertypen zu testen .
In einer perfekten Welt würde ich F5 drücken und die Funktion würde sofort einmal ausgeführt - genau wie bei der Entwicklung einer "normalen" .NET-App.