Функция Azure с запуском таймера дважды - PullRequest
1 голос
/ 18 апреля 2019

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

Моя функция (написанная на узле) запускается по таймеру (каждые 15 минут).В Application Insights и в журналах монитора портала Azure я вижу один вызов каждые 15 минут, как и ожидалось (предположительно из-за выборки).Однако вывод происходит дважды (я пишу запись в коллекцию Cosmos).Когда я смотрю журналы в реальном времени для своей функции (на портале перейдите к коду функции и откройте журналы в нижней части экрана), я вижу, что он работает дважды, очень близко друг к другу.Пример журналов ниже.Интервалы перекрываются, поэтому я не думаю, что это проблема CRON (но я не эксперт по CRON).

Я действительно рассмотрел runOnStartup.Я не уверен, что по умолчанию установлено значение false, поэтому я установил значение false и перезапустил.Та же проблема после перезагрузки.(Я до сих пор с подозрением отношусь к этому, потому что аналогичное приложение функции на одноминутном таймере работает как положено).

Я также пытался запустить функцию с портала вручную.Когда я делаю это, он запускается только один раз.

Предоставление информации, запрашиваемой на вики-сайте функций Azure:

  1. Я использую План потребления
  2. Не знаю, кактребуется много информации - мы используем конвейеры Azure DevOps и Kudu.
  3. v2 (предварительная версия) время выполнения
  4. Не задано WEBSITE_TIME_ZONE
  5. Мое выражение CRON: 0 * / 15 * * ** Мое ожидание о том, что это значит: функция должна запускаться каждые 15 минут.
  6. N / A
  7. Предоставление двух из близких запусков -

    • Идентификатор вызова: 4e142315-60e3-420d-b71a-9990683ba5aa
    • Дата и время вызова: 2019-04-18T17: 45: 00.0044464 + 00: 00
    • Регион: Восток США

    • Идентификатор вызова: 4c6f4e7a-1e9d-4278-b3c6-0a2b5310199c

    • Дата вызова время: 2019-04-18T17: 45: 00.0131739 + 00: 00
    • Регион: Восток США

Пример регистрации, показывающий два перекрывающихся вызова (фактический текст журнала отредактирован незначительно)только для простоты):

2019-04-18T17: 45: 00.004 [Информация] Выполнение 'Functions.unassignDriverPermits' (Reason = 'Таймер запущен в 2019-04-18T17: 45: 00.0044464 + 00: 00 ', Id = 4e142315-60e3-420d-b71a-9990683ba5aa)

2019-04-18T17: 45: 00.013 [Информация] Выполнение' Functions.unassignDriverPermits '(Reason =' Timer запущено в 2019-04)-18T17: 45: 00.0131739 + 00: 00 ', Id = 4c6f4e7a-1e9d-4278-b3c6-0a2b5310199c)

2019-04-18T17: 45: 33.577 [Информация] Записать информацию о чем-либо

2019-04-18T17: 45: 33.577 [Информация] Записать информацию об идентификаторе 0

2019-04-18T17: 45: 33.586 [Информация] Выполнено 'Functions.unassignDriverPermits' (Succeeded, Id =4e142315-60e3-420d-b71a-9990683ba5aa)

2019-04-18T17: 45: 33.281 [Информация] Записать информацию о чем-либо

2019-04-18T17: 45: 33.282 [Информация] Записать информацию об идентификаторе 0

2019-04-18T17: 45: 33.294 [Информация] Выполнено 'Functions.unassignDriverPermits' (Успешно, Id = 4c6f4e7a-1e9d-4278-b3c6-0a2b5310199c)

1 Ответ

1 голос
/ 19 апреля 2019

Похоже, 2 идентификатора вызова получены из 2 разных приложений (может быть, prod / dev?). Можете ли вы отфильтровать свои журналы по имени приложения, чтобы проверить, запускается ли один и тот же триггер дважды?

...