2016-01-08 3 views
1

Что происходит, если функция вызывается таймером TimerTigger каждые 5 минут, и по некоторым причинам код занимает более 5 минут?TimerTrigger Расписания и время выполнения кода

  • Связано ли это с одновременным запуском моей функции?
  • Или интервал запускается, когда выполнение запущенного кода завершено?

Я не мог найти ответ сам в документах. Я должен гарантировать, что моя функция работает всегда как singleton.

Спасибо, Alex

+0

posible related with: http://stackoverflow.com/questions/29542705/what-happens-when-a-scheduled-webjob-runs-for-a-long-time посмотреть, al webjobs работает в одном и том же путь внутри триггера, лазурный планировщик и т. д. в любом случае вы можете сделать тестовые данные в журнале и вставить некоторый длинный Sleep/ThreadWait, а затем просмотреть журнал azure webjob в azure portal –

ответ

1

Если выполнение функции занимает больше времени, чем интервал таймера, другое исполнение будет не срабатывают до тех пор, после завершения текущого вызова. Следующее выполнение запланировано после выполнение завершено. Вы можете увидеть это в коде here. Вы можете доказать это сами, попробовав простой локальный пример - создайте функцию, которая запускается каждые 5 секунд, и засыпает там на минутку. Вы не увидите другой запуск функции до тех пор, пока не закончится первая.

Что касается работы singleton, то приведенное выше показывает, что только один вызов функции выполняется в заданное время на в том же экземпляре (VM). SDK также гарантирует, что никакие другие функции не будут выполняться через развернутые экземпляры. Вы можете узнать больше об этом here. Чтобы увидеть это в действии, вы можете имитировать, запустив два экземпляра своего консольного приложения локально - один запустит расписание, а другой - нет. Однако, если вы убьете того, кто выполняет расписание, другой будет забирать его через короткое время (в течение минуты).

+0

Спасибо за отличный ответ – Alex

+0

Если это полностью ответит на ваш вопрос, отметьте его как принятый ответ, чтобы другие знали , благодаря. – mathewc