From 02fe5a9d3171af13d310bde73569d7bc32b4d1f8 Mon Sep 17 00:00:00 2001 From: AulonSal Date: Sat, 20 Feb 2021 13:11:29 +0530 Subject: [PATCH 1/5] Close Tortoise connections properly --- aerich/cli.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aerich/cli.py b/aerich/cli.py index ba0353f..20fa4a6 100644 --- a/aerich/cli.py +++ b/aerich/cli.py @@ -36,6 +36,7 @@ def coro(f): def wrapper(*args, **kwargs): loop = asyncio.get_event_loop() loop.run_until_complete(f(*args, **kwargs)) + loop.run_until_complete(Tortoise.close_connections()) return wrapper From 90b47c5af7029403e5d8ccccf61f88e88b52c562 Mon Sep 17 00:00:00 2001 From: AulonSal Date: Mon, 22 Feb 2021 07:37:40 +0530 Subject: [PATCH 2/5] Close connections even if command raises exception --- aerich/cli.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/aerich/cli.py b/aerich/cli.py index 20fa4a6..9bc8b6d 100644 --- a/aerich/cli.py +++ b/aerich/cli.py @@ -35,8 +35,10 @@ def coro(f): @wraps(f) def wrapper(*args, **kwargs): loop = asyncio.get_event_loop() - loop.run_until_complete(f(*args, **kwargs)) - loop.run_until_complete(Tortoise.close_connections()) + try: + loop.run_until_complete(f(*args, **kwargs)) + finally: + loop.run_until_complete(Tortoise.close_connections()) return wrapper From 14d20455e613e99cfc27ecbdde7c3ba720ef6358 Mon Sep 17 00:00:00 2001 From: AulonSal Date: Tue, 23 Feb 2021 13:06:40 +0530 Subject: [PATCH 3/5] Replace coro logic with tortoise.run_async --- aerich/cli.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/aerich/cli.py b/aerich/cli.py index 9bc8b6d..26a0164 100644 --- a/aerich/cli.py +++ b/aerich/cli.py @@ -8,7 +8,7 @@ from typing import List import click from click import Context, UsageError -from tortoise import Tortoise, generate_schema_for_client +from tortoise import Tortoise, generate_schema_for_client, run_async from tortoise.exceptions import OperationalError from tortoise.transactions import in_transaction from tortoise.utils import get_schema_sql @@ -34,11 +34,7 @@ parser = ConfigParser() def coro(f): @wraps(f) def wrapper(*args, **kwargs): - loop = asyncio.get_event_loop() - try: - loop.run_until_complete(f(*args, **kwargs)) - finally: - loop.run_until_complete(Tortoise.close_connections()) + run_async(f(*args, **kwargs)) return wrapper From e74fc304a5f415aef053f6cf26cba55c7561a339 Mon Sep 17 00:00:00 2001 From: AulonSal Date: Sat, 27 Feb 2021 00:43:55 +0530 Subject: [PATCH 4/5] Don't close db connections when group function \(cli\) is run --- aerich/cli.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/aerich/cli.py b/aerich/cli.py index 26a0164..e4d3cf7 100644 --- a/aerich/cli.py +++ b/aerich/cli.py @@ -8,7 +8,7 @@ from typing import List import click from click import Context, UsageError -from tortoise import Tortoise, generate_schema_for_client, run_async +from tortoise import Tortoise, generate_schema_for_client from tortoise.exceptions import OperationalError from tortoise.transactions import in_transaction from tortoise.utils import get_schema_sql @@ -34,7 +34,14 @@ parser = ConfigParser() def coro(f): @wraps(f) def wrapper(*args, **kwargs): - run_async(f(*args, **kwargs)) + loop = asyncio.get_event_loop() + + # Close db connections at the end of all all but the cli group function + try: + loop.run_until_complete(f(*args, **kwargs)) + finally: + if f.__name__ != "cli": + loop.run_until_complete(Tortoise.close_connections()) return wrapper From d4ad0e270f3ce220abeb3f1ec178bf4a8861c2bb Mon Sep 17 00:00:00 2001 From: AulonSal Date: Sun, 28 Feb 2021 12:12:32 +0530 Subject: [PATCH 5/5] Update version and changelog --- CHANGELOG.md | 4 ++++ aerich/__init__.py | 2 +- pyproject.toml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cc0a6a..e6cd0e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.5 +### 0.5.1 + +- Fix tortoise connections not being closed properly. (#120) + ### 0.5.0 - Refactor core code, now has no limitation for everything. diff --git a/aerich/__init__.py b/aerich/__init__.py index 3d18726..dd9b22c 100644 --- a/aerich/__init__.py +++ b/aerich/__init__.py @@ -1 +1 @@ -__version__ = "0.5.0" +__version__ = "0.5.1" diff --git a/pyproject.toml b/pyproject.toml index a0f1dec..031d3f9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "aerich" -version = "0.5.0" +version = "0.5.1" description = "A database migrations tool for Tortoise ORM." authors = ["long2ice "] license = "Apache-2.0"