【问题标题】:Set different timer attribute for azure function为天蓝色功能设置不同的计时器属性
【发布时间】:2020-09-15 08:43:58
【问题描述】:

我想在不同的环境(测试、验收、生产)中部署我的 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
      // ...
   }
}

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

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

【问题讨论】:

    标签: c# azure asp.net-core azure-functions


    【解决方案1】:

    您可以在 Azure 门户上的函数应用的“应用程序设置”中添加一个值(在您的函数的每个环境中,例如 dev/prod)。

    在您的功能代码中,只需编辑如下代码:

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

    希望对你有帮助~

    如果您的函数通过多个部署槽运行,请启用“添加/编辑应用程序设置”中的“部署槽设置”选项,以确保切换槽时计时器设置不会被破坏。详情请见the Docs

    【讨论】:

    • 这是一个非常简单的解决方案!我会尽快尝试,非常感谢。定时器设置也可以包含在 appsettings.json 或 local.settings.json 中进行本地调试?
    • 是的,你也可以在你的local.settings.json中设置myTimerCron,当你在Visual Studio中测试它时,比如this
    猜你喜欢
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 2021-07-21
    • 2012-02-04
    • 2020-03-22
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多