我有一张桌子,每天必须从外部来源刷新一次。我读过的所有建议都说删除整个表格并重新创建它,而不是删除所有项目。
我尝试了建议的方法,但是从DynamoDB控制台可以看到,即使表仍处于“表正在被删除”状态,deleteTable
函数也会成功返回。有时这需要一分钟以上。
删除和重新创建表的正确方法是什么?我是否应该继续尝试createTable
直到已经存在的错误消失?
我正在使用Node.js。
(该表列出了约5,000多个公交车站。来源未指定数据更改的频率,也未提供任何指示更改的指标。我每隔几周发现少量更改。)< / p>
答案 0 :(得分:3)
如果您使用的是boto3
(Python),则有一个名为TableNotExists
的侍者:
每20秒轮询
DynamoDB.Client.describe_table()
,直到达到成功状态。 25次检查失败后返回错误。
或者,您可以自己进行轮询。
答案 1 :(得分:2)
我建议每天使用当前日期作为表名的一部分来更改表名。然后,您可以创建新表并开始填充它,而不必等待删除前一天的表完成。
答案 2 :(得分:0)
如果来自createTable
方法的响应是一个Table already exists
异常,则该异常还包含一个retryDelay
属性,它是一个数字。
我找不到retryDelay
上的文档,但这似乎是以秒为单位的持续时间。
我使用Table already exists
异常检查表是否未完全删除,如果没有删除,请退回retryDelay
属性中指定的时间。经过几次迭代,便可以成功创建表。
有时retryDelay
中的值可以大于20。
这种方法每次都对我没有问题。