Программная функция Azure включает / отключает при разработке через Visual Studio - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть набор функций Azure , которые разрабатываются в Visual Studio.

Существует одна функция TimerTrigger , которая по умолчанию отключена с помощью DisableAttribute . В результате атрибут "disabled" будет установлен на true на портале Azure. После выполнения специального условия запускается другая функция, которая обновляет файл TimerTrigger function.json с "disabled": false. Это запускает TimerTrigger .

Но когда выполняется другое условие, функция.json TimerTrigger обновляется с "disabled": true, что не имеет никакого эффекта, TimerTrigger все еще срабатывает.

Обновление function.json выполняется как описано здесь Как программно включить / отключить функцию Azure .

Я прочитал несколько вопросов на GitHub, но до сих пор нет ответа. Я вижу следующие обходные пути:

  1. Попробуйте изменить файл host.json, каждый раз обновляя список функций. Но я не смог найти образец изменения файла host.json. Кроме того, я предполагаю, что это не очень хороший подход, так как все функции перезагружаются во время такого обновления, и в документации есть совет использовать этот подход только для локальной отладки. https://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json#functions.
  2. Bind DisableAttribute при настройке приложения. Но я считаю процесс обновления app.settings изощренным. Измените настройки приложения веб-сайта Azure из кода .
  3. Пересмотр архитектурного подхода.

Основная цель TimerTrigger - это включить его и начать вызывать какой-нибудь сервер, когда он не работает (ConnectionValidator). Как только сервер в порядке - отключение TimerTrigger и продолжение обычного рабочего процесса.

Есть идеи по этому поводу? Может быть, есть другой способ обойти это?

1 Ответ

0 голосов
/ 27 апреля 2018

Я бы не стал менять function.json для этого случая. Чувствует себя хакером.

Либо измените настройку приложения, либо измените переменную среды с тем же именем, что должно иметь тот же эффект.

Или, может быть, даже постоянно запускать таймер запуска и проверять предварительное условие в качестве первого действия функции таймера. Выйти немедленно, если никаких действий не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...