微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能用异步处理 300 个获取响应?

如何解决为什么我不能用异步处理 300 个获取响应?

作为家庭作业项目的一部分,我正在处理 imdb.com页面

对于一项任务,我需要发出 320 个 get-requests 以便稍后将它们转换为 beautifulsoup 对象。

我正在尝试以异步方式做到这一点,到目前为止我得到了这个:

def get_tasks(session,url_links):
    tasks = []
    num = 1 # debugging purposes
    for url in url_links:
        tasks.append(session.get(url,headers={'Accept-Language': 'en','X_FORWARDED_FOR': '2.21.184.0'},ssl=False))
        time.sleep(1) # avoid 503 status_code
        print(f"Number of responses get_tasks: {num}") # debugging purposes
        num += 1 # debugging purposes
    return tasks
# Getting response.texts
results = []

async def get_response_texts(url_links):
    async with aiohttp.ClientSession() as session:
        tasks = get_tasks(session,url_links)
        responses = await asyncio.gather(*tasks)
        t1 = time.perf_counter()
        num = 1
        for response in responses:
            results.append(await response.text())
            print(f"{num} responses processed") # debugging purposes
            num += 1
        t2 = time.perf_counter()
        print(f'Asynchronous execution: Finished in {t2 - t1} seconds\n')
if __name__ == '__main__':
    links = [a list of urls to films as strings]
    asyncio.run(get_response_texts(links))
    print(len(results))

问题来了:当我处理 100 个请求时,事情似乎没问题,但是当我处理 300 个请求时,我得到 asyncio.exceptions.TimeoutError

为什么会这样,我怎样才能避免这种情况并异步发出 320 个请求?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。