Boto3 не может получить элементы из DynamoDB - PullRequest
0 голосов
/ 15 января 2019

Поэтому я использую DynamoDB для хранения статуса моих заданий Spark. Я создал Первичные ключи с именем scheduleTime (Ключ раздела) и appName (Ключ диапазона) , и мои искровые задания записывают состояние заданий после их завершения. После завершения моих заданий запуска запланирован еще один Python-скрипт для получения статуса заданий и перезапуска приложений в случае сбоя. Я не получаю никаких элементов в таблице DynamoDB для определенного набора Первичных ключей иногда, даже если запись присутствует, и когда я использую пользовательский интерфейс, я вижу соответствующую запись. Для этого я использую boto3 library table.get_item () . Ниже приведен фрагмент кода:

    table.get_item(
    Key = {
         'scheduleTime': scheduleTime,
         'appName': appName
          }
    )

1 Ответ

0 голосов
/ 17 января 2019

Таким образом, в основном проблема заключалась в DynamoDB Python boto3 Функция библиотеки get_item () поддерживает несогласованные чтения по умолчанию (что довольно странно, поскольку другие методы поиска записей, такие как batch_get_items () дают постоянную способность к чтению). Поэтому мне просто нужно было включить флаг ConsistantRead в значение True .

response = table.get_item(
    Key = {
         "scheduleTime": scheduleTime,
         "appName": appName
    },
    ConsistentRead=True
)

Таким образом, приведенный выше фрагмент кода отлично работает для немедленного чтения.

...