Как использовать функцию сна в Python, чтобы подождать 10 минут и проверить еще раз и запустить скрипт? - PullRequest
0 голосов
/ 16 мая 2019

Мы запланировали задание cron для запуска 5 Elastic Clusters на 7:30, и нам нужно было выполнить другое задание cron, чтобы запустить скрипт в кластере искр на 8:00 AM.

Чтобы запустить скрипт в кластере искр, статус 5 эластичных кластеров должен быть зеленым.В настоящее время я наблюдаю за кластерами ES, если все 5 кластеров не являются зелеными, я отключаю cronjob для запуска сценария в кластере искр.

Я определил описанные ниже методы, чтобы найти состояние кластеров ES и найтиподсчитать, сколько кластеров ES зеленого цвета.

Я использую приведенную ниже логику, чтобы проверить, все ли (5) кластеры ES зеленого цвета, вызывают функцию, если не выход.

def get_es_clusters_status(elastic_load_balancer)
def count_green_es_clusters(es_clusters_status)
es_clusters_status = get_es_clusters_status(lb_instances)
green_es_clusters_count=count_green_es_clusters(es_clusters_status)
    print(green_es_clusters_count)
    if green_es_clusters_count == 5:
        print("YES There are 5 green clusters")
            script_in_spark()
            else:
                 print(" Not all 5 clusters are green exiting....")
                 sys.exit(1)

Но я хотел бы использовать функцию сна из временного модуля, подождать 10 минут и снова проверить количество кластеров Green ES, если они равны 5, вызвать функцию, в противном случае подождать еще 10 минут.Если нет 5 кластеров ES, я не должен запускать скрипт в кластере искр.

1 Ответ

2 голосов
/ 17 мая 2019

Ответ на вашу проблему довольно прост.Вы можете использовать оператор if else, чтобы проверить, все ли кластеры зеленые, а в разделе else сделать сон.Вот как будет выглядеть выражение if else:

while clusters!=green:
    time.sleep(600) #This sleeps for 600 seconds, which is 10 minutes. 
    if clusters==green:
        clusters=green #The last 2 lines are not needed but are a foolproof way to make sure your code breaks. 

Убедитесь, что вы импортируете время вверху кода.

...