首页 > 解决方案 > 使用 ThreadPoolExecutor Python 失败时,如何在任务队列中添加任务

问题描述

我正在使用ThreadPoolExecutorfrom packageconcurrent.futures并希望同时进行批处理请求。

from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import as_completed
import requests


BASE_URL = "api/{param_id}"

def get_result(param_id):
    url = BASE_URL.format(param_id=param_id)
    s = requests.get(url)
    return s
    # if task failed here, how can I reput it into task_queue again until it 
    # return expected result successfully

with ThreadPoolExecutor(max_workers=5) as executor:
    obj_list = []
    result_list = []
    for page in range(1, 15):
        obj = executor.submit(get_result, page)
        obj_list.append(obj)

    for future in as_completed(obj_list):
        data = future.result()
        result_list.append(data)

ThreadPoolExecutor自己实现了queue里面。我的问题是,由于某些网络超时问题或其他意外问题而导致任务失败,我该如何再次将任务重新get_result放入其中。queue

太谢谢了。

标签: python-3.xmultithreadingthreadpoolexecutor

解决方案


推荐阅读