sqlalchemy如何结束与数据库的连接以防止死锁
Sqlalchemy how to end connection to database to prevent deadlock
在我的项目中,我正在收听 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,
session.commit()
或 session.close()
应该足以释放会话持有的所有锁。
在我的项目中,我正在收听 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,
session.commit()
或 session.close()
应该足以释放会话持有的所有锁。