我正在使用AWS python API(boto3)。我的脚本启动了一些实例,然后等待它们上线,然后继续做。我希望等待在预定义的时间段后超时,但我在Python中找不到任何API。有任何想法吗?我当前代码的片段:
def waitForInstance(id):
runningWaiter = self.ec2c.get_waiter("instance_status_ok")
runningWaiter.wait(InstanceIds = [id])
instance = ec2resource.Instance(id)
return instance.state
我当然可以做一些事情,比如在一个单独的线程中运行这段代码并在需要时终止它,但我想知道boto3中是否已经内置了API,我只是错过了它。
答案 0 :(得分:0)
服务员有一个与之关联的配置,可以访问(使用上面的示例):
runningWaiter.config
此配置中的一个设置是max_attempts
,它控制在放弃之前尝试的尝试次数。默认值为40.您可以像这样更改该值:
runningWaiter.config.max_attempts = 10
这不是直接控制超时问题,而是会导致服务员提前放弃。
答案 1 :(得分:0)
为什么不经常检查实例状态?
#code copy from boto3 doc
for status in ec2.meta.client.describe_instance_status()['InstanceStatuses']:
print(status)
refence:http://boto3.readthedocs.org/en/latest/guide/migrationec2.html
BTW,最好使用标准命名约定对所有实例使用标记命名。查询任何aws资源及其原始ID是维护噩梦。答案 2 :(得分:0)
您可以在代码中放置一个睡眠计时器。睡眠x分钟,检查一下是否完成,否则返回睡眠状态。经过y次尝试后,采取某种排序操作。