У меня есть несколько функций С# Azure, которые выполняются по расписанию с помощью таймеров триггеров. Я установил их так, где %TimerSchedule%
относится к выражению cron в настройках приложения:
public static void Run([TimerTrigger("%TimerSchedule%")]TimerInfo myTimer, TraceWriter log)
Во время разработки я часто хочу запускать функции локально с помощью инструментов Azure для инструментов Visual Studio + Azure Core. Но когда я нажимаю F5 для отладки функции локально, она (обычно) не запускается немедленно. Вместо этого он начинает ждать следующего события в соответствии с расписанием таймера. Так, например, если мое выражение cron говорит, что он будет работать ежедневно в 8 вечера, мне придется подождать до 8 вечера, чтобы функция фактически выполнялась на моей машине.
Итак, мой вопрос: Каков самый простой и лучший способ заставить функцию запускаться локально?
Вещи, которые я пробовал:
- Используйте более частый график таймера только для локального развития
- Это нормально, но не идеально - вам все равно придется немного подождать, если это не очень часто, и если это очень часто, функция может выполняться несколько раз. Это то, что я делаю сейчас.
- Напишите консольное приложение или unit test, которое напрямую вызывает функцию
Run()
- Это не на 100% прямолинейно, потому что вы должны предоставить аргументы
TimerInfo
иTraceWriter
дляRun()
- и я нашел для этого удивительно небольшую документацию.
- Это не на 100% прямолинейно, потому что вы должны предоставить аргументы
Microsoft Стратегии для тестирования вашего кода на странице Azure Functions не очень полезны в этой теме - он упоминает только триггеры таймера как способ тестирования другие типы триггеров.
В идеальном мире я бы ударил F5, и функция сразу же запустилась сразу - так же, как разработать "нормальное" приложение .NET.