Как я могу вернуться к своему циклу после исключения? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть код ниже:

import urllib.request
import json

flag_servidor = 0
flag_salva_txt = 0
numero = 0

#codigo para verificar se há conexao como servidor e caso nao
#haja ele criar um arquivo txt com as infos

while 1:
    try:
        url = urllib.request.urlopen('http://IP/CAMINHO/get_infos.php')
        x_ = url.read()
        y_ = json.loads(x_.decode('utf-8'))
        get_turno_ = y_["turno"]
        print(get_turno_)

        #salva as infos do txt dentro do banco de dados
        if flag_salva_txt == 1: #significa que temos infos para serem salvas
            arquivo = open('novo-arquivo1.txt', 'r')
            for linha in arquivo:
                linha = linha.rstrip()
                valor = linha.split(";")
                print(valor[0])
            flag_salva_txt = 0
        continue
    except Exception as e:
        print("Servidor indisponível.Erro:", e)
        if flag_salva_txt == 0:
            #após salvar txt 
            flag_salva_txt = 1
            numero = numero +1
            arquivo = open('novo-arquivo'+str(numero)+'.txt', 'w')
            arquivo.write('nova linha;123;1pop' + '\n')
            arquivo.close()
        continue

Проблема в том, что: когда исключение произошло в первый раз, оно показывает мне сообщение об ошибке, но когда это происходит во второй раз, мой код перестает работать и не работаетничего не показывать.

1 Ответ

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

Я все еще не совсем ясно, что ваша программа должна делать, но, может быть, что-то вроде этого помогает.

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

Кроме того, чтобы сервер не попадал так быстро, как ваш скрипт, существует задержка в 5 секунд между каждым запросом, успешным или нет.

import datetime
import time
import urllib.request
import json


def get_turno():
    url = urllib.request.urlopen("http://IP/CAMINHO/get_infos.php")
    data = json.loads(url.read().decode("utf-8"))
    return data["turno"]


while True:
    try:
        turno = get_turno()
    except Exception as exc:
        print("Retrieving turno data failed: {}".format(exc))
    else:
        current_time = datetime.datetime.now().isoformat()
        print("Time: {} - Turno: {}".format(current_time, turno))
    time.sleep(5)
...