in amazon_lex_bot_deploy/amazon_lex_bot_deploy.py [0:0]
def wait_async(f, status_name, status_values, failed_statuses=None, **kwargs):
"""
wait till function is not in status_values any more
you can change the params like this: wait_async.retry_with(stop=stop_after_attempt(4))()
:param f: function to call to receive status
:param status_name: attribute in response to check
:param status_values: will wait as long as status is in status_values
:param failed_statuses: raises Exception when status is in failed_statuses
:param kwargs: any function parameter
:return: response or Exception in case of error or status in failed_statuses
"""
if failed_statuses is None:
failed_statuses = []
try:
wait_response = f(**kwargs)
except ValueError as ve:
raise ve
except Exception as e:
logger.error(e)
raise e
if wait_response[status_name] in status_values:
logger.info(
"Waiting. status_name: '{}' still in '{}', waiting to exit status '{}'."
.format(status_name, wait_response[status_name], status_values))
raise ValueError(
"Waiting. status_name: '{}' still in '{}', waiting to exit status '{}'."
.format(status_name, wait_response[status_name], status_values))
if wait_response[status_name] in failed_statuses:
logger.error("failed, no need to wait longer. response: {}\n".format(
wait_response))
raise Exception(
"wait_response[status_name]: {} in failed_statuses: {}".format(
wait_response[status_name], failed_statuses))
return wait_response