web-dev-qa-db-fra.com

Configuration du minuteur Azure Function via les paramètres de l'application

Je travaille sur le travail du minuteur des fonctions Azure, j'ai besoin d'obtenir l'expression cron des paramètres d'application. Veuillez me faire savoir, comment puis-je obtenir la valeur des paramètres des applications dans les fonctions Azure. Je souhaite exécuter ma fonction Azure à partir de 9 h 00 à 12 h 00 PM toutes les 30 minutes \

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

Définissez votre horaire sur "schedule": "%EmailScheduleTriggerTime%" puis dans appsetting.json ou local.settings.json vous pouvez définir la valeur EmailScheduleTriggerTime sur "0 30 9-12 * * *"

{
  "IsEncrypted": false,
  "Values": {
    "EmailScheduleTriggerTime": "0 30 9-12 * * *", //Run every  30 minutes from 9:00 to 12:00

  },
  "ConnectionStrings": {
    "DefaultConnection": ""
  }
}

[FunctionName("TimerfunctionApp")] 
public static void Run([TimerTrigger("%EmailScheduleTriggerTime%")] TimerInfo TInfo, TraceWriter log)
18
Karthikeyan VK

Si vous utilisez l'outil VS2017 Functions et définissez votre fonction dans un projet .NET (plutôt que directement dans le portail Azure), vous pouvez sélectionner l'intervalle de AppSettings à l'aide de % syntaxe:

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

Ensuite, dans les paramètres de votre application, spécifiez l'intervalle de format CRON requis, par exemple. dans local.settings.json

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

Puisque ce post a déjà de bonnes réponses, je veux partager mon expérience ici. J'essayais d'exécuter l'application localement en ajoutant l'expression cron dans le appsettings.json fichier mais quand j'ai exécuté l'application de fonction, j'ai toujours reçu une erreur comme suit

La fonction 'EmployeeTimerTrigger' est en erreur: Microsoft.Azure.WebJobs.Host: Erreur d'indexation de la méthode 'EmployeeTimerTrigger'. Microsoft.Azure.WebJobs.Host: '% EmployeeTimerTrigger%' ne se résout pas en une valeur.

Donc, pour résoudre ce que nous devons faire, c'est déplacer l'expression cron de appsettings.json à local.settings.json et cela a très bien fonctionné et j'ai pu le tester localement.

J'espère que cela vous aidera si vous faites également face à la même erreur.

0
NSDumb