Ожидание полного удаления таблицы - PullRequest
0 голосов
/ 08 июля 2019

У меня есть таблица, которую нужно ежедневно обновлять из внешнего источника. Все рекомендации, которые я прочитал, говорят, чтобы удалить всю таблицу и воссоздать ее вместо удаления всех элементов.

Я попробовал предложенный метод, но функция deleteTable вернулась успешно, хотя таблица все еще находится в состоянии «Таблица удаляется», как видно из консоли DynamoDB. Иногда это занимает больше минуты.

Как правильно удалить и заново создать таблицу? Должен ли я просто продолжать пытаться createTable, пока уже не исчезнет ошибка?

Я использую Node.js.

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

Ответы [ 3 ]

3 голосов
/ 08 июля 2019

Если вы используете boto3 (Python), есть официант , называемый TableNotExists:

Опросы DynamoDB.Client.describe_table() каждые 20секунд, пока не будет достигнуто успешное состояние.После 25 неудачных проверок возвращается ошибка.

Или вы можете сделать это самостоятельно.

2 голосов
/ 08 июля 2019

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

0 голосов
/ 23 июля 2019

Если ответом метода createTable является исключение Table already exists, то исключение также содержит свойство retryDelay, представляющее собой число.

Я не могу найти документацию по retryDelay, но, похоже, это продолжительность в секундах.

Я использую исключение Table already exists, чтобы проверить, что таблица не полностью удалена, и, если нет, откатиться на период, указанный в свойстве retryDelay. После нескольких итераций таблица может быть успешно создана.

Иногда значение в retryDelay может быть больше 20.

Этот подход работал без проблем для меня каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...