【问题标题】:Schedule a timer-triggered Azure function from the Azure Portal从 Azure 门户安排计时器触发的 Azure 函数
【发布时间】:2020-07-07 10:50:36
【问题描述】:

我有一个 Azure 函数(内置于 Visual Studio 2019,并在 Azure 的 .NET Core 3.x 堆栈上运行),它应该由计时器触发以运行,例如每晚一次。

我可以轻松地创建函数并将调度定义为 NCRONTAB 表达式,如下所示:

[FunctionName("MyFunctionName")]
public void Run([TimerTrigger("0 15 3 * * 1-5")]TimerInfo myTimer, ILogger log)
{
    // Azure function code here ....
}

像魅力一样工作 - 但是我希望能够在 Azure 门户中定义计划 - 而不是在我的函数代码中 - 以处理例如DEV vs. TEST vs. PROD 情况。在 DEV 和 TEST 平台上,我可能希望每天运行几次 - 在生产中可能每周只运行一次。

但是使用这种方法,一旦设置了时间表 - 设置好了,我就无法在 Azure 门户中更改它(所有输入字段都显示为灰色/编辑被禁用)。

我希望我可以跳过 Azure 函数声明中的 NCRONTAB 表达式 - 就像这样:

[FunctionName("MyFunctionName")]
public void Run([TimerTrigger()]TimerInfo myTimer, ILogger log)
{
    // Azure function code here ....
}

然后在 Azure 门户中指定实际的 CRON 表达式 - 但不行,CRON 表达式是强制性的......

所以我在这里要求太多了吗?或者有没有办法在我的实际代码库之外安排这个

【问题讨论】:

  • @silent:感谢您的链接 - 经过一些试验和错误后,您链接到的这个问题提供了解决方案 - 谢谢!

标签: azure-functions .net-core-3.1 timer-trigger


【解决方案1】:

作为silent提供的帖子,我们可以使用ConfigurationManager.AppSettings["key"]。不过我觉得你可以参考下面这个更简单的解决方案。

1.在本地编辑你的函数代码,不要在代码中指定cron表达式,改用%myTimerCron%

2.从本地发布到azure,然后在“应用设置”中添加key/value。

3.然后您可以通过在azure门户的“应用程序设置”中编辑myTimerCron的值来编辑cron表达式。

顺便说一句,当你在visual studio中本地测试代码时,你只需要在“local.setting.json”中提供一个名称为“myTimerCron”的cron表达式。

【讨论】:

  • 谢谢 - 这似乎做得很好!
猜你喜欢
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
相关资源
最近更新 更多