#python-3.x #multithreading #threadpoolexecutor
#python-3.x #многопоточность #threadpoolexecutor
Вопрос:
Я использую ThreadPoolExecutor
из пакета concurrent.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
снова, поскольку она не удалась из-за какой-либо проблемы с таймаутом сети или другой неожиданной проблемы.
Большое спасибо.