Параллельное сканирование Amazon DynamoDB [DDB] - boto 3 - python - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь выполнить параллельное сканирование, но похоже, что оно обрабатывает последовательно, а не извлекает полные записи

Мой дБ имеет 400 тыс. Записей, и я пытаюсь получить все записи с помощью параллельного сканирования DDB. Я хочу использовать 40 потоков

dynamodb = boto3.resource('dynamodb',
                          region_name='us-east-1',
                          endpoint_url="https://dynamodb.us-east-1.amazonaws.com",
                          aws_access_key_id="123",
                          aws_secret_access_key="456")
table = dynamodb.Table('solved_history')

last_evaluated_key = None

a = 0
while True:

    if last_evaluated_key:
        response = table.scan(ExclusiveStartKey=last_evaluated_key)
        allResults = response['Items']
        for each in allResults:
            storeRespectively(each["decodedText"], each["base64StringOfImage"])
            a += 1
    else:
        response = table.scan(TotalSegments=40, Segment=39)
        allResults = response['Items']
        for each in allResults:
            storeRespectively(each["decodedText"], each["base64StringOfImage"])
            a += 1

    last_evaluated_key = response.get('LastEvaluatedKey')

    if not last_evaluated_key:
        break
print(a)
...