2016-06-10 5 views
0

Ich habe ein Skript, das URLs in einer Textdatei über GET an eine API ausführt und übergibt und die Antwort in einer Textdatei speichert. Die For-Schleife wird jedoch beendet, wenn im ersten Abschnitt ein Fehler auftritt und die anderen nicht weiter geleitet werden. Wie kann ich immer noch den Fehler packen und mit den anderen fortfahren, ohne dass das Skript beendet wird, bevor es fertig ist?Continue Verarbeitungsanforderungen nach Fehler in Python

sys.stdout=open("mylog.txt","w") 
for row in range(0, len(exampleData)): 
    url = exampleData[row][0] 
    print (url) 
    response = requests.get(url, auth=(user, pwd)) 
    if response.status_code != 200: 
     print('Failure Message {}' .format(response.text)) 
     work = 'failed' 
     continue 
    data = json.loads(response.text)  
    print(data) 
    work = 'succeeded' 
sys.stdout.close() 
+0

Bitte korrigieren Sie den Einzug in Ihrem Code: _überhaupt einen_ Codezeilen unter der 'for' Schleife eingerückt werden muss, aber es ist unmöglich, wie viele zu erraten. – alexis

+0

Danke, nur dass – user3691635

Antwort

2

weiterverwenden statt exit()

+0

Versucht, dass, aber meine Protokolldatei zeigte immer noch nur den ersten Fehler nicht alle mit fortfahren. Es scheint jedoch länger zu dauern. – user3691635

0

Verwenden Sie einen exception, um den Fehler abzufangen, und fahren Sie fort.

+0

Also lieber als IF-Anweisung, verwenden Sie den Versuch und außer Fang? IE: – user3691635

+0

Ja, fangen Sie die Ausnahme und dann weiter. – Lucas

0

Nun, da Ihre Schleifensteuerung korrigiert wird, muss sie richtig arbeiten. Es wird jedes Mal eine Fehlermeldung ausgegeben, wenn eine Fehlerantwort auftritt (nicht 200). Wenn Sie nur eine Fehlermeldung sehen, erhalten Sie nur eine Antwort von 200 auf der anderen Seite. Wenn das nicht das ist, was Sie erwarten, liegt das Problem auf der Serverseite. (Oder in dem Inhalt von exampleData.)

Sie müssen Ihr eigenes Server-Client-System debuggen. Vereinfachen Sie diese Schleife, so dass sie nur Diagnoseinformationen über die Antwort ausdruckt (z. B. status_code drucken) und herausfinden, was wirklich vor sich geht.