Хранилище таблиц Azure из функции Python постоянно приводит к сбою при поиске отсутствующего объекта - PullRequest
0 голосов
/ 30 января 2019

У меня есть следующие настройки:

  1. Функция Azure в Python 3.6 обрабатывает некоторые сущности, используя класс TableService из Python Table API (новый для CosmosDB), чтобы проверить, является ли обрабатываемая в данный момент сущностьуже в таблице хранения.Это делается путем вызова TableService.get_entity.
  2. Метод get_entity генерирует исключение каждый раз, когда не находит сущность с заданным идентификатором строки (таким же, как и идентификатор сущности) и ключом раздела.
  3. Если объект с таким идентификатором не найден, я вызываю insert_entity, чтобы добавить его в таблицу.

При этом я пытаюсь реализовать обработку только тех объектов, которые не былиобработано до (не зарегистрировано в таблице).Однако я наблюдаю непротиворечивое поведение функции, просто зависающей после ровно 10 исключений, когда она останавливает выполнение при 10-м вызове и не продолжает обработку в течение еще одной минуты или 2!

Я даже изменил реализацию вместо того, чтобы выполнить поискво-первых, просто вызвать insert_entity и дать ему сбой при добавлении дублирующего ключа строки.Удивительно, но поведение там точно такое же - при 10-м повторном вызове выполнение останавливается и продолжается через некоторое время.

В чем причина такого поведения?Это какой-то механизм защиты для учетной записи хранения, которая срабатывает?Или это как-то связано с клиентом Python?Для меня это выглядит очень по-своему.Мне не удалось найти какую-либо документацию или страницу настроек на портале, чтобы повлиять на такое поведение.

Мне интересно, можно ли реализовать такую ​​логику с использованием табличного хранилища?Кажется, я не нахожу оправданным запускать экземпляр SQL Azure db или Cosmos DB для такой тривиальной функции проверки, не существует ли сущность в таблице.

Спасибо

...