python 3 次请求 try-except 失败

python 3 requests try-except failure

我有一个程序可以从站点下载页面,在其中找到 link 图片并下载这些图片。如果我尝试 运行 在具有快速稳定的 Internet 连接的计算机上运行此程序 - 一切都可以完美运行数天和数周。但是,如果我在一台互联网连接速度慢或不稳定的计算机上尝试这个程序——我有一个问题——"try-except" 模块似乎无法正常工作。

---此功能下载内容-任何内容(页面或图片)

def downl(self,addr,cook,head2,errmess):
    global result
    try:
        result=requests.get(addr, cookies=cook, headers=head2)
    except:
        print(errmess) # error message
        time.sleep(5)
    return result

我将此函数 link 发送到页面,然后其他函数在该页面中查找 picture_link,然后我将发送到相同的函数 (downl) picture_link。在此之后,我将函数 (downl) 的结果保存为 .jpg 文件。正如我所说 - 在具有正常互联网连接的计算机上一切正常。结果我的硬盘上有 5、10 或 5000 张图片。

但让我举个例子说明互联网连接不佳会发生什么。假设我们有2页,每页1张图片。

step 1) downloading 1st page (def downl)
step 2) taking picture_link from it
step 3) downloading picture (def downl)
step 4) saving 1st picture to hdd 1.jpg
step 5) downloading 2nd page (def downl)
step 6) taking picture_link from it
step 7) downloading picture (def downl) and receivind error message (errmess)
step 8) saving 2nd picture to hdd 2.jpg

仅举个例子:第一张图片可能是内容适当的普通jpg。第二张图片的文件扩展名为 jpg,但内容为第 2 页(通常为 html 文件,以错误的扩展名 "jpg" 保存)

换句话说:在第二张图片的下载过程中互联网出现问题,程序打印了一个关于它的错误(errmess),但是它没有无数次重试(正如我的功能所假设的那样)它以某种方式通过了 try- except block 并返回之前的结果(第 2 页),已保存为第 2 张图片。

请帮忙!如何让这个 try-except(或请求)永远工作,直到它下载它应该下载的东西(无论互联网连接发生什么错误),而不是通过以前的结果。

非常感谢您的时间和关注。

然后你需要像这样的 while True 循环:

def downl(self,addr,cook,head2,errmess):
    global result
    while(True):
        try:
            result=requests.get(addr, cookies=cook, headers=head2)
            return result
        except:
            print(errmess) # error message
            time.sleep(5)