我正在开发Azure函数计时器Job,我需要从appsettings获取cron表达式。请告诉我,如何从Azure功能中的appsettings中获取价值。我希望每隔30分钟从上午9:00到下午12:00运行我的天蓝色功能\
{
"disabled": false,
"bindings": [
{
"name": "timerInfo",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 * * * * *"
}
]
}
答案 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
答案 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
}