aiogram3 + sqlalchemy2+asyncpg

Задача: пользователь в боте запрашивает какие то данные, эти данные берутся из таблицы (сначала проверяются, что данные были занесены не более чем 4 часа назад), удаляются и затем отдаются пользователю. Данных может быть любое количество. В чем собственно вопрос: Эти данные иногда почему то не берутся из бд (они 100% там есть и по фильтрам все подходит). Такая ошибка происходит в 3 из 10 случаев (т.е. иногда данные выдаются, иногда нет, никаких ошибок не выпадает в консоль). Мне кажется что это может быть из-за асинхронности кода (типа из бд не успевают взяться эти данные, а функции удаления и return уже срабатывают). База данных postgresql, библиотека asyncpg. Несколько дней бьюсь с этой проблемой и не понимаю в чем беда, помогите, пожалуйста...

q = await session.execute(
               select(TableName.name)
               .where(TableName.local == local)
               .filter(TableName.created + timedelta(hours=4) > now)
               .limit(quantity))

scal_q = q.scalars().all()
await session.execute(delete(TableName).where(TableName.name.in_(scal_q)))
await session.commit()
return scal_q

Ответы (0 шт):