Как убить/отменить/остановить запуск будущего исполнителя в Python ThreadPoolExecutor? Future.cancel() возвращает False ⇐ Python
Как убить/отменить/остановить запуск будущего исполнителя в Python ThreadPoolExecutor? Future.cancel() возвращает False
Я хочу вызвать два API одновременно, используя Python ThreadPoolExecutor (код прилагается). Если какой-либо из этих двух вызовов API отвечает, я хочу прекратить звонить другому. Потому что в моем случае одному из двух API потребуется много времени, чтобы вернуть ответ, и я хочу избежать вызова.
def get_rest_api_response(url): вернуть запросы.get(url) запросы на импорт, ОС импортировать concurrent.futures из concurrent.futures импортировать ThreadPoolExecutor, as_completed с ThreadPoolExecutor(max_workers=4) в качестве исполнителя: f1 = executor.submit(get_rest_api_response, url="REST_API_URL_1") f2 = executor.submit(get_rest_api_response, url="REST_API_URL_2") no_future_is_done = Истина пока (no_future_is_done): если f1.done(): no_future_is_done = Ложь print("f1 готово") вывод = f1.result() print(f2.cancel()) ######------> Ошибка! если f2.done(): no_future_is_done = Ложь print("f2 выполнено") вывод = f2.result() print(f1.cancel()) ######-------> Ошибка! печать(вывод)
Я использую Future.cancel(), но он не работает и возвращает False. https://pd.codechef.com/docs/py/3.4.2/l ... ure.cancel
Есть ли другой способ добиться этого?
Я хочу вызвать два API одновременно, используя Python ThreadPoolExecutor (код прилагается). Если какой-либо из этих двух вызовов API отвечает, я хочу прекратить звонить другому. Потому что в моем случае одному из двух API потребуется много времени, чтобы вернуть ответ, и я хочу избежать вызова.
def get_rest_api_response(url): вернуть запросы.get(url) запросы на импорт, ОС импортировать concurrent.futures из concurrent.futures импортировать ThreadPoolExecutor, as_completed с ThreadPoolExecutor(max_workers=4) в качестве исполнителя: f1 = executor.submit(get_rest_api_response, url="REST_API_URL_1") f2 = executor.submit(get_rest_api_response, url="REST_API_URL_2") no_future_is_done = Истина пока (no_future_is_done): если f1.done(): no_future_is_done = Ложь print("f1 готово") вывод = f1.result() print(f2.cancel()) ######------> Ошибка! если f2.done(): no_future_is_done = Ложь print("f2 выполнено") вывод = f2.result() print(f1.cancel()) ######-------> Ошибка! печать(вывод)
Я использую Future.cancel(), но он не работает и возвращает False. https://pd.codechef.com/docs/py/3.4.2/l ... ure.cancel
Есть ли другой способ добиться этого?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение