2017-11-03 3 views
0

ich auf meiner Himbeere einen sehr kleinen und einfachen Python-Skript habe, es funktioniert gut, solange es eine aktive Wi-Fi-Verbindung. Die Himbeere ist mit einem mobilen Hotspot verbunden und es ist möglich, dass sie ihre Verbindung verliert, da sie außer Reichweite geraten könnte. Sobald dies geschieht, löst es eine Ausnahme aus und beendet die Anfrage "while" -Schleife.Retry urllib Anfrage auf Ausnahme

Ich habe gehofft, mehr Informationen zu erhalten, wie ich dieses Skript Pause machen oder „ignorieren“ die Ausnahme, so dass es wieder in die Schleife geht, sobald die Verbindung wieder hergestellt ist.

import urllib 
    import serial 
    from time import sleep 

    link = "http://myurl/" 
    while True: 
     f = urllib.urlopen(link) 
     myfile = f.read() 
     print myfile 
     ser = serial.Serial('/dev/ttyUSB0', 9600) 
     ser.write(myfile) 
     sleep(3) 
+0

, wenn Sie wissen, dass diese Zeile: 'f = urllib.urlopen (link)' eine Ausnahme auslösen kann, können Sie es wickeln mit 'versuchen .. .except ... 'und handle es wie du willst – alfasin

+0

' try'/'except' und bei exception,' pass'. – roganjosh

Antwort

0

Sie können etwas genannt, (natürlich) eine try Aussage versuchen! In Ihrer while-Schleife können Sie einen try: except Block verwenden, um sicherzustellen, dass selbst wenn Ihr Code nicht ausgeführt wird (Ihr Pi verliert die Verbindung oder etwas anderes Seltsames passiert), Sie werden das Programm nicht beenden!

Diese Art von Code würde wie folgt aussehen:

import urllib 
import serial 
from time import sleep 

link = "http://myurl/" 
while True: 
    try: 
     f = urllib.urlopen(link) 
     myfile = f.read() 
     print myfile 
     ser = serial.Serial('/dev/ttyUSB0', 9600) 
     ser.write(myfile) 
     sleep(3) 
    except: 
     sleep(3) #If the code executed in the try part fails, then your program will simply sleep off 3 seconds before trying again! 
+0

Vielen Dank, ich suchte nach vielen dieser Ausnahmeregeln, aber ich sah nie die Einfachheit, in der es verwendet werden könnte. Das funktioniert wie ein Zauber! – Rogier