为 azure 函数设置不同的计时器属性

CMo*_*gan 1 c# azure asp.net-core azure-functions

我想在不同的环境(测试、验收、生产)中部署我的 Azure Function App。这是一个时间触发的函数,每晚在生产中运行。然而,当我测试和调试它时,即当它在 Dev 和 Acc 环境中运行时,我不想要这个。目前,我的计时器属性如下:

public class TimedAzFunction
{   
   // CTOR 
   public TimedAzFunction()
   { 
   }

   // How to set the timer (using CRON notation):
   // "0 30 3 * * 1-5" for prod
   // Runs every 5 mins: "0 */5 * * * *" for dev and acc
   [FunctionName("TimedAzFunction")]
   public async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)  
   {
      // Code for function here
      // ...
   }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这意味着我要发布它时必须手动更改它,这很容易出错。

我尝试使用本地设置做一些事情并评估该值,然后创建一个 TimerTrigger 对象,但这不起作用。如何根据运行环境设置计时器,例如使用AZURE_FUNCTIONS_ENVIRONMENTmy local.settings.json?具体来说,我希望函数在每晚凌晨 3 点运行,并在 Dev 和 Acc 环境中每 5 或 10 分钟运行一次。

Hur*_*hen 6

您可以在 azure 门户上的函数应用程序的“应用程序设置”中添加一个值(在函数的每个环境中,例如 dev/prod)。 在此处输入图片说明

在您的函数代码中,只需编辑如下代码: 在此处输入图片说明

当您将函数从本地部署到 azure 时,它​​将由您的“应用程序设置”中的“myTimerCron”值触发。

希望有帮助~

如果您的函数通过多个部署槽运行,请启用“添加/编辑应用程序设置”中的“部署槽设置”选项,以确保在切换槽时不会破坏计时器设置。有关详细信息,请参阅文档