python - 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) 但结果是一样的。我该如何解决这个问题?
解决方案
您是否尝试过使用一致读取? https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html 在类似线程中查看更多数据DynamoDB 一致读取导致架构错误
data = table.get_item(phone_number="42", consistent_read=True)
推荐阅读
- php - 按 slug 顺序返回自定义分类
- algorithm - 条件变化时嵌套的时间复杂度
- azure - Bot Framework SDK4 - 'deploy.cmd' 未被识别为内部或外部命令、可运行程序或批处理文件
- mysql - 在 MySQL 中将数据从行转置到列(没有任何聚合)
- html - 如何将嵌入的图像放在文本块的宽度内
- protractor - Serenity-JS,步进函数超时
- dynamics-crm - Microsoft USD - 关闭 USD 内的所有活动选项卡,但保持会话活动
- r - R函数内的循环
- excel - 工作表名称作为 SUB 参数与 VLOOKUP
- java - Spring Boot - YML 配置 - 合并时擦除条目