orm. Когда проект писался я долгое время даже не думал и не задумывался, что синхронная бд это очень плохо с асинхронным кодом(aiogram). Сейчас я пытаюсь сделать работу с бд не блокирующей. В чате aiogram мне @Tishka17 посоветовал использовать run_in_executor. Я попробовал запускать каждый запрос в executor, но начал получать InterfaceError. Затем почитал, что сессия не расчитана на многопоточность и что нужно использовать scoped_session. В конце выполнения функций бд я делаю Session.remove(), и при попытке вызова атрибутов relationship получаю DetachedInstanceError Как можно сделать работу с бд неблокирующей? Переписывать всё под новый стиль не вариант, слишком много запросов уже написано
Не нужно использовать scoped session. Нужно на каждый независимый логический поток юзать свою сессию
Проблема в том, что запросы очень много где используются, и допустим функция с запросом в запросе. И здесь, получается, декоратор на каждую функцию для работы с бд уже не подойдёт? Обьъкты же нельзя использовать вместе, если они из разных сессий?
Обсуждают сегодня