出现异常时重试 urllib 请求

Retry urllib request on exception

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

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

    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)

您可以尝试一种称为(显然)try 语句的方法!

在你的 while 循环中,你可以使用 try: except 块来确保即使你的代码没有执行(你的 pi 失去连接或其他奇怪的事情发生)你也不会'不要结束程序!

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

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!