并发的各个超时
问题内容:
我看到了两种在中指定超时的方法concurrent.futures
。
as_completed()
wait()
两种方法都处理N个运行的期货。
我想为每个将来指定一个单独的超时。
用例:
- 将来从数据库获取数据的超时时间为0.5秒。
- 将来从HTTP服务器获取数据的超时时间为1.2秒。
我该如何处理concurrent.futures
?还是这个库不是正确的工具?
结论
- AFAIK mdurant解决方案是一个很好的解决方法。
- 我想下一次我将使用其他库。也许asyncio对此有更好的支持。请参阅:https://docs.python.org/3/library/asyncio-task.html#asyncio.sleep
问题答案:
如何实现自己的:
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循环或较短的等待时间)