[Python] Is having a concurrent.futures.ThreadPoolExecutor call dangerous in a FastAPI...

Discussão em 'Python' iniciado por Stack, Maio 3, 2025.

  1. Stack

    Stack Membro Participativo

    I have the following test code:

    import concurrent.futures
    import urllib.request

    URLS = ['http://www.foxnews.com/',
    'http://www.cnn.com/',
    'http://europe.wsj.com/',
    'http://www.bbc.co.uk/',
    'http://some-made-up-domain.com/']

    # Retrieve a single page and report the URL and contents
    def load_url(url, timeout):
    with urllib.request.urlopen(url, timeout=timeout) as conn:
    return conn.read()

    # We can use a with statement to ensure threads are cleaned up promptly
    with concurrent.futures.ThreadPoolExecutor() as executor:
    # Start the load operations and mark each future with its URL
    future_to_url = {executor.submit(load_url, url, 60): url for url in URLS}
    for future in concurrent.futures.as_completed(future_to_url):
    url = future_to_url[future]
    try:
    data = future.result()
    except Exception as exc:
    print('%r generated an exception: %s' % (url, exc))
    else:
    print('%r page is %d bytes' % (url, len(data)))


    I need to use the concurrent.futures.ThreadPoolExecutor part of the code in a FastAPI endpoint.

    My concern is the impact of the number of API calls and the inclusion of threads. Concern about creating too many threads and its related consequences, starving the host, crashing the application and/or the host.

    Any thoughts or gotchas on this approach?

    Continue reading...

Compartilhe esta Página