У меня есть функция, которая берет все аккаунты пользователей из базы данных, а затем берет каждый из них и подключается к нему. Я использую ключевое слово
await перед вызовом функции
pool_user, однако цикл не переходит к следующей итерации, пока происходит подключение к аккаунту, хотя в функции
pool_user нет ничего, что могло бы блокировать асинхронный цикл.
async def start(bot: Bot):
async def pool_user(account):
user = User(account, bot)
if await user.connect():
users[account.id] = user
else:
await bot.send_message(user.owner_id, str(f"Произошла ошибка входа в аккаунт {user.name}!"))
accounts = db.account.get_all_accounts()
for account in accounts:
await pool_user(account)
При этом если создать задачу для каждого аккаунта, то всё выполняется параллельно.
async def start(bot: Bot):
async def pool_user(account):
user = User(account, bot)
if await user.connect():
users[account.id] = user
else:
await bot.send_message(user.owner_id, str(f"Произошла ошибка входа в аккаунт {user.name}!"))
accounts = db.account.get_all_accounts()
for account in accounts:
asyncio.create_task(pool_user(account))
Возможно я слабо понимаю асинхронность, но прочитав несколько статей по этому поводу мне кажется, что это должно работать.