gpt4 book ai didi

c# - 在本地运行一次计时器触发的 Azure 函数的最简单方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 04:03:04 26 4
gpt4 key购买 nike

我有一些 C# Azure 函数,它们使用 timer triggers 按计划运行。我已经像这样设置它们,其中 %TimerSchedule% 引用应用程序设置中的 cron 表达式:

public static void Run([TimerTrigger("%TimerSchedule%")]TimerInfo myTimer, TraceWriter log)

在开发过程中,我经常希望使用 Azure Functions Tools for Visual Studio + Azure Functions Core Tools 在本地运行函数。但是,当我按 F5 在本地调试该函数时,它(通常)不会立即运行。相反,它开始按照计时器计划等待下一次发生。例如,如果我的 cron 表达式表示每天晚上 8 点运行,那么我必须等到晚上 8 点才能让该函数在我的计算机上实际运行。

所以我的问题是:让函数在本地运行一次的最简单、最好的方法是什么?

我尝试过或考虑过的事情:

  1. 仅针对本地开发使用更频繁的计时器计划
    • 这还可以,但并不完美——你仍然需要等待一点,除非它非常频繁,如果它非常频繁,那么该函数可能会运行多次。这就是我现在正在做的事情。
  2. 编写直接调用函数的 Run() 方法的控制台应用或单元测试
    • 这并不是 100% 简单,因为您必须向 Run() 提供 TimerInfoTraceWriter 参数 - 我发现令人惊讶的是,这方面的文档很少。

微软的Strategies for testing your code in Azure Functions页面对这个主题没有多大帮助 - 它只提到计时器触发器作为测试其他触发器类型的方法。

在完美的世界中,我按下 F5,该函数将立即运行一次 - 就像开发“普通”.NET 应用程序一样。

最佳答案

我有同样的问题,并使用 DEBUG 标志仅在调试时才具有 RunOnStartup:

        public static void Run(
[TimerTrigger("* 0 7 * * 1-5"
#if DEBUG
, RunOnStartup=true
#endif
)]TimerInfo myTimer, TraceWriter log)
{

关于c# - 在本地运行一次计时器触发的 Azure 函数的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46556621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com