From 41fccd23e9b4397d6cc294b42e1a198cd8f8b268 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 15 Jun 2022 18:28:00 +0200 Subject: [PATCH] test_asyncio: run_until() implements exponential sleep (#93866) run_until() of test.test_asyncio.utils now uses an exponential sleep delay (max: 1 second), rather than a fixed delay of 1 ms. Similar design than support.sleeping_retry() wait strategy that applies exponential backoff. --- Lib/test/test_asyncio/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_asyncio/utils.py b/Lib/test/test_asyncio/utils.py index 07ef33d3fc2..507daa11c28 100644 --- a/Lib/test/test_asyncio/utils.py +++ b/Lib/test/test_asyncio/utils.py @@ -109,10 +109,12 @@ async def once(): def run_until(loop, pred, timeout=support.SHORT_TIMEOUT): + delay = 0.001 for _ in support.busy_retry(timeout, error=False): if pred(): break - loop.run_until_complete(tasks.sleep(0.001)) + loop.run_until_complete(tasks.sleep(delay)) + delay = max(delay * 2, 1.0) else: raise futures.TimeoutError()