Как проверять состояние моментального снимкаasticsearch каждые X секунд, используя цикл while в python? - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь настроить проверку состояния python код запуска снимка, который будет ловить, который будет продолжаться, когда статус "IN_PROGRESS" или "STARTED" и будет выходить и что-то делать друг для другастатус.например, в BASH это будет что-то вроде:

while [ "$SNAP_STATUS" == "IN_PROGRESS" ] || [ "$SNAP_STATUS" == "STARTED" ] && [ "$counter" -lt 150 ]
do
    sleep 60
    SNAP_STATUS=$(curl -s -X GET "$ELASTIC_SERVER:9200/_snapshot/$REPOSITORY/$SNAPSHOT/_status"?pretty | jq .snapshots[].state -r)
    echo "SNAPSHOT NAME: $SNAPSHOT - STATUS: $SNAP_STATUS"
    counter=$(( $counter + 1 ))
    echo $counter
done

if [[ "$SNAP_STATUS" == "SUCCESS" ]] ; then
    echo "YAY!"
else
    echo "BOO..."
fi

1 Ответ

0 голосов
/ 14 мая 2019

Надеюсь, я вас правильно понял:

import requests
from time import sleep

your_snapshot_url = ""
snap_status = "IN_PROGRESS"
counter = 0
while snap_status == "IN_PROGRESS" or (snap_status == "STARTED" and counter < 150):
    sleep(60)
    req = requests.get(your_snapshot_url).content
    snap_status = req['snapshots']['state'] # Replace with whatever you need to parse the state
    counter += 1
    print(counter)

if snap_status == "SUCCESS":
    print("YAY!")
else:
    print("BOO...")

Это сделает запрос на your_snapshot_url каждые 60 секунд при увеличении счетчика каждый цикл. Цикл while завершится, когда snap_status , если что-либо иное, чем IN_PROGRESS, или STARTED, но счетчик меньше 150

При выходе вы получаете печать «YAY», если статус привязки - SUCCESS или «BOO», в противном случае

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...