diff --git a/src/s5p/pool.py b/src/s5p/pool.py index b50dba5..24487ae 100644 --- a/src/s5p/pool.py +++ b/src/s5p/pool.py @@ -306,9 +306,17 @@ class ProxyPool: async def _test(key: str, entry: ProxyEntry) -> None: async with sem: try: - results[key] = await self._test_proxy(key, entry) + ok = await self._test_proxy(key, entry) except Exception: - results[key] = False + ok = False + results[key] = ok + # mark passing proxies alive immediately so they're + # available before the full batch completes + if ok: + entry.alive = True + entry.fails = 0 + entry.last_ok = time.time() + self._alive_keys.append(key) tasks = [_test(k, e) for k, e in target] await asyncio.gather(*tasks)