在异常时重试urllib请求

时间:2017-11-03 18:08:07

标签: python exception connection urllib

我的覆盆子上有一个非常小而简单的python脚本,只要有一个有效的Wi-Fi连接,它就可以正常工作。树莓连接到移动热点,它可能会失去它的连接,因为它可能会超出范围。一旦发生这种情况,就会抛出异常并结束请求“while”循环。

我希望获得更多有关如何使此脚本暂停或“忽略”异常的信息,以便在连接恢复后立即返回到循环中。

    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)

1 个答案:

答案 0 :(得分:0)

您可以尝试一种名为(显然)try语句的内容!

while循环中,您可以使用try: except块来确保即使您的代码没有执行(您的pi失去联系或其他奇怪的事情发生),您也会赢得# 39;结束程序!

这种类型的代码如下所示:

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!