2015-04-01 85 views
1

我試圖使用python創建一個rds實例。使用python創建一個rds實例:擁有status always =創建

我有下面的代碼來創建一個實例,然後我想顯示我的打印「實例正在運行」,當實例有狀態可用時。

的問題是,當出現在AWS同治控制檯中的可用狀態,在我的控制檯應用程序仍然出現總是狀態=創建和代碼不出去而循環:

結果林有:

.... 
    creating 
    233 
    creating 
    234 
    ... 

代碼:

instance = conn.create_dbinstance(...) 

print "Waiting for instance to be up and running" 

status = instance.status 
inc = 0 
while status != 'available': 
    sleep(5) 
    status = instance.status 
    print status 
    inc=inc +1 
    print inc 

if status == 'available': 
    print "Instance is now running" 

你明白爲什麼這會發生?

+1

變量'db'來自哪裏,爲什麼要檢查'db.status'而不是'instance.status'? – 2015-04-01 16:08:28

+0

對不起,我把錯誤的代碼,我現在正確更新! – UserX 2015-04-01 16:12:01

+1

boto文檔並不總是清楚何時像'DBInstance.status'這樣的結果是通過API按需獲取的,而不是從早期的緩存查找返回的。我敢打賭,在這裏,你正在返回的'instance.status'調用每次只返回相同的(緩存的)結果。在你的while循環中嘗試'status = conn.get_all_domsstances(instance_id = instance.id)[0] .status'而不是'status = instance.status'。 – 2015-04-01 17:09:11

回答

1

boto docs並不總是清楚如何通過API按需獲取諸如DBInstance.status的結果,而不是從早期的緩存查找返回。我敢打賭,在這裏,您正在使用的instance.status調用每次只返回相同(緩存)的結果。

嘗試

status = conn.get_all_dbinstances(instance_id=instance.id)[0].status 

,而不是

status = instance.status 

while循環中。

相關問題