Python: печать, когда возникает ошибка и когда она исчезает - PullRequest
0 голосов
/ 28 октября 2019

У меня есть веб-скрипт, который проверяет четыре сайта раз в минуту и ​​отправляет сообщения в твиттер, если присутствует какое-либо из заданных ключевых слов. Если произошла ошибка ConnectionError, она спит в течение минуты, а затем пытается снова. Я хотел бы напечатать «Нет подключения к Интернету» в первый раз, когда ошибка возникает, но не во второй раз, если ошибка все еще присутствует, когда она повторяется через минуту. Я также хотел бы, чтобы он печатал «Интернет-соединение установлено» в первый раз, когда он не получает ConnectionError после ранее возникшей ошибки подключения. Здесь я также хотел бы печатать только один раз. Как я должен кодировать это? У меня есть это до сих пор:

def checksite():
    try:
        *extensive irrelevant code for web scraping and posting*

    except requests.exceptions.ConnectionError as e:
        print("No internet connection")

while True:
    checksite()
    sleep(60)

Это, однако, печать каждый раз, когда не удается подключиться к Интернету.

Вся помощь приветствуется!

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Попробуйте это:

NoInternet = 0
def checksite():
    try:
        *extensive irrelevant code for web scraping and posting*
        if NoInternet == 1:
           print("Internet connection established")
           NoInternet = 0

    except requests.exceptions.ConnectionError as e:
        if NoInternet == 0:
             print("No internet connection")
             NoInternet += 1 

while True:
    checksite()
    sleep(60)

Но вы должны проверить вкладки

0 голосов
/ 28 октября 2019

Простое решение может выглядеть следующим образом: checksite возвращает состояние подключения к Интернету вместо печати (оставляя логику печати в цикле):

def checksite():
    try:
        # *extensive irrelevant code for web scraping and posting*
        return True

    except requests.exceptions.ConnectionError as e:
        return False

was_connected = False
while True:
    connected = checksite()
    if connected and not was_connected:
        print("Internet connection established")
    elif not connected and was_connected:
        print("No internet connection")
    was_connected = connected
    sleep(60)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...