在该配置中
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker
db_engine = create_async_engine('<DATABASE_URL>', echo=False, future=True)
async_session = async_sessionmaker(db_engine, class_=AsyncSession, expire_on_commit=False)
async def get_session() -> AsyncSession:
async with async_session() as session:
yield session
await session.close()
字符串
我可以连接到Postgresql数据库,但有几个连接保持打开。这是一个问题吗?我如何修复它?
1条答案
按热度按时间cetgtptt1#
由于您正在使用连接池来获取会话,因此
SQLAlchemy
将保持一些连接打开,以便您可以重用它们,而无需等待建立新的连接。默认情况下,这个数字是
5
,但您可以通过将pool_size
参数传递给async_sessionmaker
来更改它。https://docs.sqlalchemy.org/en/20/core/pooling.html
顺便说一句,你不必调用
session.close()
,因为你使用的是上下文管理器,当你从with
退出时,它会为你做这件事