使用 python 创建一个 rds 实例:始终保持状态 = 正在创建
Create a rds instance using python: having status always = creating
我正在尝试使用 python 创建一个 rds 实例。
我有下面的代码来创建一个实例,然后我想在实例状态可用时显示我的打印 "Instance is now running"。
问题是,当在 aws 管理控制台中出现可用状态时,在我的控制台应用程序中仍然总是出现状态 = 正在创建并且代码没有退出 while 循环:
我得到的结果:
....
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"
你知道为什么会这样吗?
boto docs 并不总是清楚什么时候像 DBInstance.status 这样的结果是通过 API 按需获取的,还是从早期的缓存查找中返回的。我敢打赌,您使用的 instance.status 调用每次都返回相同的(缓存的)结果。
尝试
status = conn.get_all_dbinstances(instance_id=instance.id)[0].status
而不是
status = instance.status
在你的 while 循环中。
Python 打印所有 RDS 实例和状态的程序。
import boto.rds
#Connection url : Required region, access_key, secret_access_key
conn = boto.rds.connect_to_region('ap-south-1', aws_access_key_id='<aws access key>', aws_secret_access_key='<aws secret key>')
#dbinstances will have all database instances name
dbinstances = conn.get_all_dbinstances()
#We can iterate and print one by one db instance name and status.
for rds_db in dbinstances:
print(rds_db,' = ', rds_db.status)
我正在尝试使用 python 创建一个 rds 实例。
我有下面的代码来创建一个实例,然后我想在实例状态可用时显示我的打印 "Instance is now running"。
问题是,当在 aws 管理控制台中出现可用状态时,在我的控制台应用程序中仍然总是出现状态 = 正在创建并且代码没有退出 while 循环:
我得到的结果:
....
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"
你知道为什么会这样吗?
boto docs 并不总是清楚什么时候像 DBInstance.status 这样的结果是通过 API 按需获取的,还是从早期的缓存查找中返回的。我敢打赌,您使用的 instance.status 调用每次都返回相同的(缓存的)结果。
尝试
status = conn.get_all_dbinstances(instance_id=instance.id)[0].status
而不是
status = instance.status
在你的 while 循环中。
Python 打印所有 RDS 实例和状态的程序。
import boto.rds
#Connection url : Required region, access_key, secret_access_key
conn = boto.rds.connect_to_region('ap-south-1', aws_access_key_id='<aws access key>', aws_secret_access_key='<aws secret key>')
#dbinstances will have all database instances name
dbinstances = conn.get_all_dbinstances()
#We can iterate and print one by one db instance name and status.
for rds_db in dbinstances:
print(rds_db,' = ', rds_db.status)