Python пока ждет 100 секунд и возвращает True или False - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть скрипт Python ниже, который проверяет, является ли пинг успешным. Если он пройдет успешно в течение 100 секунд, он вернет True.Если ping не пройден, он должен вернуть False, но он не возвращает False, а когда ping успешен, он возвращает True.

Может кто-нибудь исправить приведенный ниже код, почему он не возвращает False

Код:

def ping(self,hostname):
        time_check = datetime.now()
        data = ""
        while not "Success" in data:
            time.sleep(1)
            data = self.pingCheck("ping 10.10.10.1 count 5")
            if (datetime.now()-time_check).seconds > 100:
                return False
        return True

1 Ответ

0 голосов
/ 21 сентября 2018

Код ниже будет работать для вас:

import time

def ping(self, hostname, try_for=100):
    t_end = time.time() + try_for
    is_succeed = False
    while time.time() < t_end or is_succeed:
        time.sleep(1)
        data = self.pingCheck("ping 10.10.10.1 count 5")
        is_succeed = "Success" in data
    return is_succeed

Я определил время ожидания как параметр с именем try_for, значение по умолчанию которого установлено на 100, но вы можете передать любую другую суммусекунд, которые вы хотите потратить на ожидание доступности хоста.

...