Ключевое слово
await
заставляет ожидать завершения всей функции и только потом происходит переход к следующей итерации.
Если использовать
asyncio.create_task
, то создается и запускается фоновая задача - цикл продолжается после запуска этой асинхронной функции и не ждет ее завершения.
хотя в функции pool_user нет ничего, что могло бы блокировать асинхронный цикл
Во-первых, там есть подключение
if await user.connect()
Во-вторых, ты отправляешь сообщение если подключиться не удалось
await bot.send_message
Но в любом случае ты постоянно делаешь подключение, которое и блокирует выполнение функции