Sqlalchemy, как разорвать соединение с базой данных, чтобы предотвратить тупик - PullRequest
0 голосов
/ 23 октября 2019

В моем проекте я слушаю поток kafka и помещаю сообщение в базу данных. В настоящее время я создаю сеанс с определенной областью для подключения к моей базе данных. Есть ли правильный способ закрыть соединение после загрузки записи, чтобы избежать взаимоблокировки?

У меня есть блок try-catch-finally, который делает эти вещи, но мне интересно, какой из них на самом делеобязательно:

        session.flush()
        session.expire_all()
        session.expunge_all()
        session.remove()
        session.close_all()

Если это помогает, при создании соединения я также использую пулы соединений со следующими настройками:

 ENGINE = sqlalchemy.create_engine(f'db2+ibm_db://{CONNECTION_STRING}', echo=False,
                                      pool_timeout=60, pool_recycle=30, pool_size=30, max_overflow=5,

1 Ответ

0 голосов
/ 24 октября 2019

session.commit() или session.close() должно быть достаточно для снятия всех блокировок, удерживаемых сеансом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...