RDS快照复制的Python进度条

问题描述:

如果此问题已被问及之前,请让我知道在哪里,对于我的生活,我无法找到任何答案。RDS快照复制的Python进度条

def waitforsnapshot(TargetDBSnapshot): 
    available = False 
    while not available: 
    time.sleep(10) 
    response_ncali_snap = get_dest_snap(ncali_client, 'testdb', 'manual') 
    for i in response_ncali_snap: 
     if i['DBSnapshotIdentifier'] == TargetDBSnapshot: 
      print("{}: {}...".format(i['DBSnapshotIdentifier'], i['Status'])) 
      if i['Status'] == "available": 
       available = True 
       break 

我从一个区域移动RDS快照到另一个,和上面的代码一直工作,直到状态更改为“可用”。我试图添加进度条,而不是每次打印状态print("{}: {}...".format(i['DBSnapshotIdentifier'], i['Status'])),直到快照状态更改为可用。有没有办法使用tqdm或其他库来做到这一点?

+0

您使用的是EC2还是S3?如果您使用S3Transfer,则可以使用回调获取进度。 [查看带有示例进度代码的文档](http://boto3.readthedocs.io/en/latest/_modules/boto3/s3/transfer.html)。根据所提供的代码,我看不到您如何实际传输数据。 get_dest_snap返回什么类型的对象?一个EC2快照对象?如果是这样,你不能使用[快照进度](http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Snapshot.progress)属性吗? – agtoever

+0

@agtoever如果我不够清楚,我很抱歉,我在问题的主题中提到了它 - 这是将RDS快照从一个区域复制到另一个区域时的情况。 get_dest_snap刚刚返回正在复制的区域中存在的快照字典,基本上它是describe_db_snapshots并通过快照创建时间对它们进行排序。 – shabbzy

你可以集中DescribeDBSnapshotsAPI resultmethod in boto3),从PercentProgress领域获得进展,然后添加使用tdqm过程酒吧是一个简单的任务。

+0

听起来很奇怪,但在快照状态更改为“可用”之前,PercentageProgress字段显示1%,一旦变为可用,它就会变为100%。它不会增加到1%以上,直到它完成,即100%。由于评论限制,我无法粘贴整个输出。 – shabbzy

+0

@shabbzy怎么样? – georgexsh

+0

那么,无法想象它,而且正在等待现在。另外我用aws开了一张票,没有收到他们的回复 – shabbzy