ThreadPoolExecutor无法正常处理Python请求

ThreadPoolExecutor无法正常处理Python请求,python,python-requests,concurrent.futures,Python,Python Requests,Concurrent.futures,当我从ThreadPoolExecutor请求一长串URL时,我遇到了一个问题,似乎请求没有被发送。我期待来自URL的json响应 urls = ["example1.com", "example2.com", "example3.com"] #My list is about 1,500 urls long def load_url(url): print("here") r = requests

当我从ThreadPoolExecutor请求一长串URL时,我遇到了一个问题,似乎请求没有被发送。我期待来自URL的json响应

urls = ["example1.com", "example2.com", "example3.com"] #My list is about 1,500 urls long

def load_url(url):
    print("here")
    r = requests.get(url)
    print(r.url)
    print(r.json())
    return r

def main():
    urls = ["example1.com", "example2.com", "example3.com"] #My list is about 1,500 urls long

    with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
        future_to_url = {executor.submit(
            load_url, url): url for url in urls}

        for future in concurrent.futures.as_completed(future_to_url):
            print("right here")
            url = future_to_url[future]
            try:
                response = future.result()
            except (HTTPError, ConnectionError, ConnectTimeout):
                print("fail")

            else:   
                print(response.json())

main()

当我执行以下代码时,as_completed函数似乎只发送和接收了第一个url的请求。其余的,尽管打印了“here”和正确的url以及正确的json响应(来自load_url函数),但它们不会发送到as_completed函数。所以,它不断地打印“这里”,而不是“就在这里”


我的python版本是3.9.1

当您有1500个URL,或者甚至更少的URL(比如20个左右)时,您是否注意到了这个问题?“就在这里”的延迟将基于请求的响应。因此,“此处”的打印肯定会连续快速,而“此处”则需要时间,取决于响应时间和网络延迟等其他因素。谢谢您的评论。我想出来了。。。或者至少它按照我希望的方式工作。api调用是成功的,但由于某种原因,当我将响应对象返回给as_completed时,实际上它从未返回。现在起作用的是,我只将所需回复中的信息返回给已完成的用户。另外,我增加了一些利率限制。谢谢你的评论!感谢您随时通知我们!很高兴你解决了这个问题。