Ich habe einen Code, der einen Snapshot erstellt und dann überprüft, ob es fertig ist, schrieb ich den folgenden Code, aber aus irgendeinem Grund aktualisiert es nicht die Variable state
und die While-Schleifen weiterhin drucken gleiche auch wenn der Snapshot wurde completed
While-Schleife bei gleicher Bedingung stecken
Im folgenden ist der Code:
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"
OUTPUT:
pending
Snapshot under creation
pending
Snapshot under creation
pending
Snapshot under creation
pending
Snapshot under creation
Diese druckt nur noch die "Snapshot under creation"
, obwohl der Schnappschuss abgeschlossen ist. Der Grund dafür ist, ich bin nicht in der Lage, meinen Zustand zu aktualisieren variable
ich glaube, bitte helfen Sie mir wie?
Sie können auch snapshot.state für jede Iteration drucken. Ich würde gerne sehen, ob der Wert "abgeschlossen" oder etwas anderes ist. –
okay, ich bearbeite den Code und drucke die neue Ausgabe, bitte überprüfen Sie – Kittystone
Zu viele Druckanweisungen sind verwirrend. Können Sie nur snapshot.state innerhalb der while-Schleife drucken, aber außerhalb von if-else. Sie können auch eine break-Anweisung innerhalb der Bedingung hinzufügen. –