Функция Azure — запуск Cron — нормально каждую секунду, но не каждую минуту

#azure #cron #azure-functions

#azure #cron #azure-функции

Вопрос:

Я пытаюсь создать CRON для каждой минуты в моем триггере таймера функции Azure.

Согласно документации, я нашел это: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer#cron-examples

"0 */1 * * * *" не запускается вообще.

"*/1 * * * * *" выполняется каждую секунду.

Где я ошибаюсь?

function.json выглядит так:

 {
  "bindings": [
    {
      "name": "myTimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 */1 * * * *"
    }
  ],
  "scriptFile": "../dist/TriggerWork/index.js"
}
 

Комментарии:

1. Как вы подтверждаете, что он не запускается каждую минуту? Это выглядит правильно, поэтому я спрашиваю

2. Да — я ждал > 1 минуты. И код — это всего лишь пример deafult согласно ссылке выше. Я вижу, что он регистрируется, когда я использую "*/1 * * * * *"

3. Ах, я только что заметил в консоли: The listener for function 'Functions.TriggerWork' was unable to start. [4/17/19 4:09:22 AM] The listener for function 'Functions.TriggerWork' was unable to start. Microsoft.WindowsAzure.Storage: Settings must be of the form "name=value".

4. Похоже, вы не настроили правильный ключ хранилища. Вы тестируете на локальном или на портале?

5. @GeorgeChen — извините, не понимаю. Он выполняется локально.

Ответ №1:

Я мог бы воспроизвести вашу проблему с {AzureWebJobsStorage} записью строки подключения в local.settings.json is каким-то образом не соответствует ее формату: введите описание изображения здесь

 {
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "{AzureWebJobsStorage}",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}
 

Для всех триггеров, кроме HTTP, требуется допустимая строка подключения AzureWebJobsStorage. Причина этого связана с масштабированием до нескольких виртуальных машин: если функция масштабируется до нескольких виртуальных машин и имеет несколько экземпляров, для координации требуется учетная запись хранилища, чтобы гарантировать, что одновременно выполняется только один экземпляр триггера таймера. Это создает некоторые трудности, если вы пытаетесь разрабатывать локально, но, к сожалению, в настоящее время это ограничение триггера таймера.

Для получения более подробной информации вы можете обратиться к этой аналогичной проблеме.

Комментарии:

1. извините, какое решение в итоге я не получил вашего ответа? Каким должен быть допустимый azurewebjobstorage?