gpt4 book ai didi

python - while 循环卡在相同的条件下

转载 作者:行者123 更新时间:2023-12-01 03:51:23 25 4
gpt4 key购买 nike

我有一个代码,它创建一个快照,然后检查它是否完成,我编写了以下代码,但由于某种原因,它没有更新 state 变量,并且 while 循环继续打印即使快照已完成

,也会发生同样的事情

以下是代码:

 def call_creater():
regions = ['eu-central-1']
for region in regions:
ec2 = boto3.resource('ec2', region, aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY, )
snapshot = ec2.create_snapshot(VolumeId='vol-f9e7d220', Description='fra01-he-trial-ansible01')
while snapshot.state != 'completed':
print snapshot.state
print "Snapshot under creation"
time.sleep(10)
else:
print "snapshot READY"

输出:

 pending
Snapshot under creation
pending
Snapshot under creation
pending
Snapshot under creation
pending
Snapshot under creation

即使快照已完成,这也会继续打印“正在创建的快照”。原因是,我相信我无法更新我的状态变量,请帮我解决如何?

最佳答案

snapshot = ec2.create_snapshot(VolumeId='vol-f9e7d220', Description='fra01-he-trial-ansible01')

该行仅执行一次,此时状态为“pending”。您必须在 while 循环内再次重新检查 snapshot 变量的状态。

您没有在代码或 while 循环内的任何位置更新 snapshot 变量。

您必须在 while 循环中执行类似的操作。

snapshot = conn.get_all_snapshots(snapshot_ids=[<YOUR SNAPSHOT ID>])[0]

检查boto库以及如何通过id获取快照的状态。

关于python - while 循环卡在相同的条件下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38195258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com