从 Azure 门户安排计时器触发的 Azure 函数

mar*_*c_s 2 azure-functions timer-trigger .net-core-3.1

我有一个 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 ....
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

Hur*_*hen 6

作为silent提供的帖子,我们可以使用ConfigurationManager.AppSettings["key"]. 但我认为你可以参考下面的解决方案,它更简单。

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

在此处输入图片说明

2.从本地发布到azure,然后在“应用程序设置”中添加一个key/value。 在此处输入图片说明

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

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