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

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

我有一个 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提供的帖子,我们可以使用ConfigurationManager.AppSettings["key"]。不过我觉得你可以引用下面这个更简单的解决方案。

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

enter image description here

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

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

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

关于azure-functions - 从 Azure 门户安排计时器触发的 Azure 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62773585/

相关文章:

python - 当 "id"绑定(bind)点在 cosmosDB 集合中没有相应的项目时,用 python 编写的 Azure 函数有 500

c# - 无法获取托管服务实例(手动启动托管服务 .net core 3.1)

azure - 如何在运行时从 appsettings.json 读取 CRON 表达式?

来自 Azure Function 的 C# HttpClient POST 请求(带有用于第三方 API 的授权标记)将被删除 header 和正文

azure - 无法以编程方式添加/更新 Azure 功能 key

c# - Azure 函数 : Queue Trigger is expecting Base-64 messages and doesn't process them correctly

configuration - 如何根据 Net Core 3.1 中所选的构建配置合并 appsettings.json?

azure - 未找到 Linux Azure WebApp 的指定框架 'Microsoft.AspNetCore.App' 、版本 '3.1.0'

Azure Webjob 计时器触发器不触发

azure - 从计时器触发的函数调用另一个 Azure 函数