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或其他库来做到这一点?
答
你可以集中DescribeDBSnapshots
API result(method in boto3),从PercentProgress
领域获得进展,然后添加使用tdqm
过程酒吧是一个简单的任务。
您使用的是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
@agtoever如果我不够清楚,我很抱歉,我在问题的主题中提到了它 - 这是将RDS快照从一个区域复制到另一个区域时的情况。 get_dest_snap刚刚返回正在复制的区域中存在的快照字典,基本上它是describe_db_snapshots并通过快照创建时间对它们进行排序。 – shabbzy