2015-04-01 83 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循环中。

相关问题