我有一些使用计时器触发器按计划运行的C#Azure函数。我已经像这样设置了它们,其中%TimerSchedule%
在应用程序设置中引用cron表达式:
public static void Run([TimerTrigger("%TimerSchedule%")]TimerInfo myTimer, TraceWriter log)
在开发过程中,我经常想使用适用于Visual Studio的Azure函数工具+ Azure Functions核心工具在本地运行函数。但是当我按F5键在本地调试功能时(通常)它不会立即运行。相反,它将根据计时器计划开始等待下一次发生。因此,例如,如果我的cron表达式说每天晚上8点运行,那么我必须等到晚上8点才能使该功能真正在我的机器上运行。
所以我的问题是:使函数在本地运行一次的最简单,最佳方法是什么?
我尝试过或考虑过的事情:
- 使用更频繁的计时器计划以进行本地开发
- 可以,但并不完美–除非它非常频繁,否则您还需要稍等一下,如果它非常频繁,则该函数可能会运行多次。这就是我现在正在做的。
- 编写直接调用该函数的控制台应用程序或单元测试
Run()
方法- 这并不是100%直观的,因为您必须提供
TimerInfo
并提供TraceWriter
参数,Run()
而我发现令人惊讶的是很少有文档。
- 这并不是100%直观的,因为您必须提供
Microsoft的“ Azure函数”页面中的代码测试策略在该主题上不是很有帮助–它仅提及将计时器触发器作为测试其他对象的一种方式触发器类型的。
在理想情况下,我按下F5键,该功能将立即运行一次,就像开发一个“普通” .NET应用程序一样。