如何在异常超时后重试并从dict中删除?

2024-05-29 03:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想增加抓取内容的覆盖率并避免超时,但是我想如果页面出现超时错误,然后重试,但是如果第二轮超时增加超时计数器,则重试URL,最多重试3次,如果没有增加,则从dict中删除

async def _worker(self, i):
    while True:
        url = await self.fetching.get()
        if url is None:
            return

        #logger.info(f'Fetch worker {i} is fetching a URL: {url}')
        try:
            site = await self._fetch_rss(url)
            await self._processing(site)
        except asyncio.TimeoutError as err:
            while self.timeouts[url] < 1:
                logger.info("adding {}".format(url))
                site = await self.fetch(url)
                await self.process(site)
                self.timeouts[url] += 1

Tags: selfinfourl内容is覆盖率sitefetch
1条回答
网友
1楼 · 发布于 2024-05-29 03:11:04

通常,我用于“尝试n次,如果我从未成功,则出错”的模式如下:

for _ in range(MAX_TRIES):
   try:
       # do something
       pass
   except Exception:
       # handle exception
       pass
   else:
       break
else: # A lesser-known syntax; else after for is only run if the for *wasn't* broken out of
    # We never broke, which means we never had a success, so handle the failure here
    pass

相关问题 更多 >

    热门问题