首页 > 解决方案 > DynamoDB 更新后更新它再次回到旧值

问题描述

我正在尝试更新 dynamoDb 中的项目数,我在下面写了函数

def put_count_in_table(pk, sk, max_price, min_price, mean_price, total_count):

    dynamodb = getDynamoDb()

    table = dynamodb.Table(TABLE_ITEM_CATEGORIES)

    response = table.update_item(
        Key={
            'pk': pk,
            'sk': sk,
        },
        UpdateExpression="set max_price=:m, min_price=:n, mid_price=:p, total_count=:q",

        ExpressionAttributeValues={
            ':m': max_price,
            ':n': min_price,
            ':p': mean_price,
            ':q': total_count
        }
    )
    return response

对于项目更新,我已经通过循环调用函数,如下所示

for i, item in enumerate(items):
    shopItem = getShopItem(item)
    res = put_count_in_table(shopItem['pk'], shopItem['sk'], shopItem['max_price'],
                                    shopItem['min_price'], shopItem['mid_price'], shopItem['total_count'])

问题是某些产品更新正常,但在某些情况下,某些产品正在更新,但 2-3 秒后它又回到旧值。我在更新前给了 sleep(3) 但结果是一样的。我该如何解决这个问题?

标签: pythonpython-3.xamazon-dynamodb

解决方案


您是否尝试过使用一致读取? https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html 在类似线程中查看更多数据DynamoDB 一致读取导致架构错误

data = table.get_item(phone_number="42", consistent_read=True)

推荐阅读