From 91e2fac26720b69e03077274a3fda228bdd2a5d7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bryan=E4=B8=8D=E5=8F=AF=E6=80=9D=E8=AE=AE?= Date: Thu, 5 Oct 2023 21:16:14 +0000 Subject: [PATCH] fix: AsyncSession.close_all() --- lib/sqlalchemy/ext/asyncio/session.py | 5 +++-- test/ext/asyncio/test_session_py3k.py | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/sqlalchemy/ext/asyncio/session.py b/lib/sqlalchemy/ext/asyncio/session.py index dcbf26c6c4..897cc496e8 100644 --- a/lib/sqlalchemy/ext/asyncio/session.py +++ b/lib/sqlalchemy/ext/asyncio/session.py @@ -32,6 +32,7 @@ from .result import _ensure_sync_result from .result import AsyncResult from .result import AsyncScalarResult from ... import util +from ...orm import close_all_sessions from ...orm import object_session from ...orm import Session from ...orm import SessionTransaction @@ -1057,9 +1058,9 @@ class AsyncSession(ReversibleProxy[Session]): await greenlet_spawn(self.sync_session.invalidate) @classmethod - async def close_all(self) -> None: + async def close_all(cls) -> None: """Close all :class:`_asyncio.AsyncSession` sessions.""" - await greenlet_spawn(self.sync_session.close_all) + await greenlet_spawn(close_all_sessions) async def __aenter__(self: _AS) -> _AS: return self diff --git a/test/ext/asyncio/test_session_py3k.py b/test/ext/asyncio/test_session_py3k.py index 19ce55a2d7..a3988ea52d 100644 --- a/test/ext/asyncio/test_session_py3k.py +++ b/test/ext/asyncio/test_session_py3k.py @@ -122,6 +122,15 @@ class AsyncSessionTest(AsyncFixture): sync_connection.dialect.default_sequence_base, ) + @async_test + async def test_close_all(self, async_session): + User = self.classes.User + u = User(name="u") + async_session.add(u) + await async_session.commit() + await AsyncSession.close_all() + assert async_session.sync_session.identity_map.values() == [] + class AsyncSessionQueryTest(AsyncFixture): @async_test -- 2.47.3