将项目添加回 for 循环

Add item back to for loop

我正在编写一些代码,但我不知道如何创建我想要的行为。我想遍历一个列表,并提取一些数据。在我的真实代码中,代码旨在提取一些数据,但数据是在不同时间发布的,并不是以可预测的方式发布的。如果出现错误,我想做的是将可迭代对象添加回列表中。

示例代码

my_list = ['cat', 'dog', 'bird', 'fish']


for animal in my_list:
    try:
        get.('www.somerandomurl_{}.com'.format(animal))
        print("good work!")
    except:
        add item back to list, try again once the rest of the list is compete

有办法吗?甚至可能告诉 python 等待 n 分钟再试一次有错误的项目

您可以使用一个循环 运行 直到您获取所有项目,在每个 运行 select (和弹出)一个元素:

  • 如果成功:你很好
  • 如果失败:将其放回要尝试的值中
from requests import get
from collections import deque

my_list = ['cat', 'dog', 'bird', 'fish']
to_fetch = deque(my_list)

while to_fetch:
    to_try = to_fetch.popleft()
    try:
        res = get('www.somerandomurl_{}.com'.format(to_try))
        print("good work!", res.text)
    except Exception:
        print("Failed", to_try, "but will try again later")
        to_fetch.append(to_try)