Refactor the network poller to use a pool of asyncio worker tasks that pull nodes from a queue and query them. I think this is a more standard method of doing async tasks (e.g. matches other languages and means we can use Python 3.11's asyncio.TaskGroup in the future). This also provides more control over the parallelization than relying on aiohttp's worker management and better logging of what workers are doing. And I think that the "connect" timeout might have penalized the poller for time waiting for a connection in the pool, causing more timeouts.
Refactor the network poller to use a pool of
asyncio
worker tasks that pull nodes from a queue and query them. I think this is a more standard method of doing async tasks (e.g. matches other languages and means we can use Python 3.11'sasyncio.TaskGroup
in the future). This also provides more control over the parallelization than relying on aiohttp's worker management and better logging of what workers are doing. And I think that the "connect" timeout might have penalized the poller for time waiting for a connection in the pool, causing more timeouts.Closes #105