Я закрываю и открываю сеанс каждый раз, когда процесс просыпается и проверяет
SQLAlchemy не будет работать так. Изменения отслеживаются в сеансе.
someobj = Session.query(SomeClass).first()
помещает someobj
во Session
внутренний кеш. Когда вы делаете someobj.attr = val
, это отмечает изменение в сеансе, связанное с someobj.
Таким образом, если вы извлекли object1 из некоторого сеанса1, а затем закрыли сеанс1, объект1 больше не связан ни с одним сеансом и не отслеживается.
Лучшим решением будет зафиксировать право на изменение:
object1 = newsession.add(object1)
newsession.commit()
В противном случае вам придется управлять собственным кэшем объектов и объединять их все при каждой проверке.