gpt4 book ai didi

python - 如何在异常后重试迭代器 next()

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:33 25 4
gpt4 key购买 nike

我有一个有时会给我套接字超时的迭代器,我想知道如何在套接字超时时重试,而不是跳到迭代器中的下一个项目。

迭代器是使用以下方法创建的:iterator = pool.imap(process_hit, new_nongeneric_search.scan())因此,我在 Elasticsearch 查询 (new_nongeneric_search.scan()) 结果中的每个项目上调用一个函数 (process_hit)。目前,当我遇到超时时,我只是捕获异常并继续调用 next(it)

这是我目前的做法:

while True:
try:
next(it)
except StopIteration:
logging.info("No more results to process.")
return
except socket.timeout:
logging.warning("Encountered timeout.")

如果我通过手动重新运行脚本重试相同的项目足够多次,超时将自行解决,所以我希望能够以编程方式重试有问题的项目,而不是仅仅重复搜索多次。

最佳答案

您的迭代器不返回任何内容,并且迭代器接口(interface)不支持“返回”,因此您无法在您提供的代码中“重试”。

要么从您的迭代器返回可用于“重试”的内容,要么在迭代器逻辑内部处理重试(在您的情况下,这将在 process_hit()new_nongeneric_search. scan() 取决于您超时的步骤)。

关于python - 如何在异常后重试迭代器 next(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56907567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com