等待表被完全删除

时间:2019-07-08 11:57:55

标签: amazon-web-services amazon-dynamodb

我有一张桌子,每天必须从外部来源刷新一次。我读过的所有建议都说删除整个表格并重新创建它,而不是删除所有项目。

我尝试了建议的方法,但是从DynamoDB控制台可以看到,即使表仍处于“表正在被删除”状态,deleteTable函数也会成功返回。有时这需要一分钟以上。

删除和重新创建表的正确方法是什么?我是否应该继续尝试createTable直到已经存在的错误消失?

我正在使用Node.js。

(该表列出了约5,000多个公交车站。来源未指定数据更改的频率,也未提供任何指示更改的指标。我每隔几周发现少量更改。)< / p>

3 个答案:

答案 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。

这种方法每次都对我没有问题。