簡體   English   中英

發生異常后如何返回循環?

[英]How can I return to my loop after an exception?

我有以下代碼:

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

問題是:當第一次發生異常時,它向我顯示消息錯誤,但是當它第二次發生時,我的代碼停止運行並且不顯示任何內容。

我仍然不太清楚您的程序應該做什么,但也許這樣的事情會有所幫助。

我將您的程序重構為單獨的 function 以獲取數據,並將其打印出來(或您喜歡做的任何事情)在主循環中。

此外,為了不盡可能快地訪問服務器,每個請求之間有 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM