Индивидуальные тайм-ауты для concurrent.futures
Я вижу два способа указать тайм-ауты в concurrent.futures
.
Оба метода обрабатывают N фьючерсов.
Я хотел бы указать индивидуальный тайм-аут для каждого будущего.
Случай использования:
- Будущее для получения данных из БД имеет таймаут 0,5 с.
- Будущее для получения данных с HTTP-сервера имеет тайм-аут в 1,2 секунды.
Как мне обрабатывать это с помощью concurrent.futures
? Или эта библиотека не подходит?
Заключение
Ответы
Ответ 1
Как реализовать свою собственную:
wait(dbfutures + httpfutures, timeout=0.5)
[fut.cancel() for fut in bdfutures if not fut.done()]
wait(httpfutures, timeout=0.7)
[fut.cancel() for fut in httpfutures if not fut.done()]
(или цикл while со сном/проверка или ожидание с коротким таймаутом)