Добавление строк элементов в DynamoDB с использованием Boto3 эффективным способом - PullRequest
0 голосов
/ 04 апреля 2020

Я не могу найти ответ на этот вопрос, но у меня есть этот код:

def putItem(table_name):
items = [['4/20/20','4/21/20'],['12345','01100111']]
sz = len(items[0])
i =0
while i < sz:
    add = dynamodb.put_item(
        TableName = table_name,
        Item ={
            'dates' : {
            'S': items[0][i]
            },
            'tweet_id':{
            'S': items[1][i]
            }
        }
    )
    i+=1

Я просто храню твиты, которые тяну, используя Tweepy, и помещаю их в свой экземпляр AWS. Я написал это, чтобы быть «легким» на данный момент, но я знаю, что с увеличением количества твитов, которые я получаю, это будет крайне неэффективно. Кто-нибудь знает, как я могу переписать это, чтобы приблизить его к линейному времени?

1 Ответ

0 голосов
/ 04 апреля 2020

Вы можете использовать метод boto3 batch_write_item().

import boto3

dynamodb = boto3.client('dynamodb')

response = dynamodb.batch_write_item(
    RequestItems={
        'my-table-name': [
            {
                'PutRequest': {
                    'Item': {
                        'dates' : {
                            'S': '4/20/20'
                        },
                        'tweet_id':{
                            'S': '12345'
                        }
                    }
                }
            },
            {
                'PutRequest': {
                    'Item': {
                        'dates' : {
                            'S': '4/20/20'
                        },
                        'tweet_id':{
                            'S': '01100111'
                        }
                    }
                }
            }
        ]
    }
)

Имейте в виду ограничения для этой операции

...