Как продолжить попытки подключения в случае сбоя подключения - PullRequest
0 голосов
/ 03 апреля 2020

(python)

Итак, у меня есть базовое c соединение, которое прекрасно работает, пока все, к чему я хочу подключиться, находится в сети. Код превращается в автономный с помощью pyinstaller. Если все, к чему я хочу подключиться, находится в автономном режиме, при запуске автономной программы выдается «Проверка сценария не удалось» (проверка - это название программы). Как я могу сделать так, чтобы он продолжал пытаться установить sh соединение, пока это не будет успешно? Вот то, что я попытался ниже.

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

while True:
        result = s.connect_ex((host,port))
        if result == 0:
                break
        else:
                sleep_for = random.randrange(1,10)
                time.sleep( sleep_for )
                pass

Func1()
Func2()
s.close()

1 Ответ

0 голосов
/ 03 апреля 2020

Документация для connect_ex гласит:

Как и connect(address), вместо индикатора ошибок, возвращаемых уровнем C, возвращается индикатор ошибки, вместо исключения исключения. вызов connect () (другие проблемы, такие как «хост не найден», могут по-прежнему вызывать исключения)

Это означает, что вам все еще нужно перехватывать исключения, чтобы бесконечно повторить попытку подключения. Чтобы не выполнять двойную работу: обрабатывать connect_ex возвращаемое значение и перехватывать исключения, вы можете переключиться с использования метода connect_ex на connect и переписать свой код следующим образом:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

while True:
        try:
                s.connect((host,port))
                break
        except socket.error:
                sleep_for = random.randrange(1,10)
                time.sleep( sleep_for )
                pass

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