我在 concurrent.futures
中看到两种指定超时的方法.
as_completed()
wait()
这两种方法都处理 N 个正在运行的 future 。
我想为每个 future 指定一个单独的超时。
用例:
- future 从数据库获取数据的超时时间为 0.5 秒。
- future 从 HTTP 服务器获取数据的超时时间为 1.2 秒。
如何使用 concurrent.futures
处理这个问题?或者这个库不是正确的工具?
结论
- 据我所知,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()]
(或带有 sleep /检查的 while 循环或短超时等待)
关于python - concurrent.futures 的个别超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38456357/