Azure功能计时器通过应用程序设置配置

时间:2017-08-07 03:18:43

标签: azure azure-functions

我正在开发Azure函数计时器Job,我需要从appsettings获取cron表达式。请告诉我,如何从Azure功能中的appsettings中获取价值。我希望每隔30分钟从上午9:00到下午12:00运行我的天蓝色功能\

{
 "disabled": false,
 "bindings": [
   {
     "name": "timerInfo",
     "type": "timerTrigger",
     "direction": "in",
     "schedule": "0 * * * * *"
   }
 ]
}

5 个答案:

答案 0 :(得分:19)

如果您正在使用VS2017函数工具并在.NET项目中定义您的函数(而不是直接在Azure门户中),您可以使用AppSettings语法从%获取间隔:

[FunctionName("MyTimerFunction")] 
public static void Run([TimerTrigger("%TimerInterval%")] TimerInfo myTimer, TraceWriter log, ..

然后在您的应用设置中指定所需的CRON格式间隔,例如。在local.settings.json

{
  "Values" : { 
      "TimerInterval" : "0 30 9-12 * * *"
    }
}

答案 1 :(得分:8)

将您的日程安排设为.container.has-open-drawer { overflow-y: hidden; } ,然后在 appsetting.json 中,您可以将EmailScheduleTriggerTime值设置为 "schedule": "%EmailScheduleTriggerTime%"

"0 30 9-12 * * *"

答案 2 :(得分:1)

由于此帖子已经有了很好的答案,所以我想在这里分享我的经验。我试图通过在appsettings.json文件中添加cron表达式来在本地运行该应用程序,但是当我运行功能应用程序时,总是收到如下错误

“ EmployeeTimerTrigger”函数错误: Microsoft.Azure.WebJobs.Host:错误索引方法 “ EmployeeTimerTrigger”。 Microsoft.Azure.WebJobs.Host: '%EmployeeTimerTrigger%'无法解析为值。

因此,为了确定我们需要做的是将cron表达式从appsettings.json更改为local.settings.json,它可以正常工作,并且我能够在本地对其进行测试。

希望您也遇到同样的错误会有所帮助。

答案 3 :(得分:1)

如前所述(对于 Node js)我们可以在 function.json 中使用 %scheduleValue% 并在 local.settings.json 中使用 scheduleValue 作为参数 在这里它在 Microsoft 文档中提到 - https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer?tabs=javascript#configuration

function.json local.settings.json

答案 4 :(得分:0)

要添加到先前的答案中,您可以使用appsettings.json语法从配置文件(%)文件的任何字段中获取任何值-不仅来自Values配置对象。 / p>

例如:

appsettings.json

{      
  "ScheduleConfiguration": {
    "FunctionOne": {
      "CronExpression": "0 40 2 * * *"
    }
  }
}

Functions.cs

    /// <summary>
    /// %ScheduleConfiguration:FunctionOne:CronExpression%
    ///  - e.g. "0 40 2 * * *" - executes at 02:40:00am every day
    /// </summary>
    [FunctionName("FunctionOne")]
    public async Task FunctionOne(
        [TimerTrigger("%ScheduleConfiguration:FunctionOne:CronExpression%")]
        TimerInfo timerInfo)
    {
        // Azure function code
    }