Таймер функции Azure, запущенный в точное время из таблицы базы данных - PullRequest
0 голосов
/ 09 июля 2019

У меня есть функция Azure (node.js) и список точного времени (7:30, 8:05 и т. Д.) В таблице базы данных.Я хотел бы запускать функцию Azure в точные моменты времени, используя таблицу базы данных.

Теперь у меня проблемы:

  1. Разве запуск по таймеру занимает только одно расписание cron?
  2. Могу ли я использовать переменные среды для запуска в момент времени 1 (например, 7:30), а затем, когда это будет сделано, изменить в коде переменную среды на время 2 (например, 8:05)?Чтобы он снова запустился во время 2 (8:05)?
  3. Может ли другая функция (сработала HTTP) запустить мою исходную функцию (сработала таймер), а также изменить переменную среды?

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вы также можете использовать Durable Functions для этого: https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-timers#usage-for-delay

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

В основном вы получите вечного оркестратора (что нормально): https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-eternal-orchestrations#periodic-work-example

0 голосов
/ 09 июля 2019

запускается ли таймер только по одному расписанию хрон?Да, триггер таймера может иметь только одно выражение cron

О динамическом выражении cron вы можете обратиться к этой Конфигурации , ScheduleExpression разрешает настройку в настройках приложения.Вы можете установить с помощью "schedule": "%TriggerSchedule%". И определить TriggerSchedule в ваших настройках приложения.Затем измените ваши настройки приложений динамически.

Другой способ - использовать Kudu API для изменения function.json.

PUT https://{functionAppName}.scm.azurewebsites.net/api/vfs/{pathToFunction.json}, Headers: If-Match: "*", Body: new function.json content

Затем синхронизируйте триггер функции.

POST https://{functionAppName}.scm.azurewebsites.net/api/functions/synctriggers

Может ли другая функция (сработала HTTP) запустить мою исходную функцию (сработала таймер), а также изменить переменную окружения?

Вы можете вызвать функцию триггера HTTP вфункция таймера, однако файл конфигурации среды выполнения функций Azure недоступен для записи.Но поскольку он запускает Службу приложений, вы можете управлять этими настройками программно через PowerShell , REST api или через CLI .

Имейте в виду , что изменения этих настроек приведут к перезагрузке сайта

...