Функция Azure - защита от многократного вызова - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть функция Azure для запуска по таймеру.Я видел несколько экземпляров, работающих одновременно.Есть ли способ защитить меня от нескольких вызовов?Я не хочу, чтобы он запускался до тех пор, пока предыдущий вызов не будет завершен, даже если я нажму кнопку воспроизведения на портале Azure для функции. Например, приведенное ниже, кажется, запускается дважды, когда я нажимал кнопку запуска на портале, думаю, что это уже былоэкземпляр работает.

2019-02-19T04:25:16  Welcome, you are now connected to log-streaming service.
2019-02-19T04:25:23.353 [Info] Function started (Id=aacaf548-79f1-49ec-8614-e638302b8368)
2019-02-19T04:25:26.639 [Info] Function started (Id=f4abe10c-f2bf-447b-bef7-efe3499420c6)

1 Ответ

0 голосов
/ 20 февраля 2019

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

Чтобы ограничить масштаб, вы можете изменить настройку приложения WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT .

Хотя идентификаторы запросов различаются в журналах [Info], это не обязательно означает, что запросы отправлялись в два разных экземпляра.Я считаю, что если ваш код асинхронный, один и тот же экземпляр приложения может обрабатывать несколько запросов параллельно.

...