From 61246844256f4414b1a3fbc84f9ee12f08ffe85f Mon Sep 17 00:00:00 2001 From: Pavel Kirilin <win10@list.ru> Date: Sat, 11 Sep 2021 12:47:51 +0400 Subject: [PATCH] Fixed critical bug. Description: * Fixed bug that caused uvcorn worker freezes. * Added bunch of __init__ files. * Renamed tests module. Signed-off-by: Pavel Kirilin <win10@list.ru> --- .../{{cookiecutter.project_name}}/pyproject.toml | 3 +++ .../{{cookiecutter.project_name}}/db/dependencies.py | 9 +++++---- .../{{cookiecutter.project_name}}/services/__init__.py | 1 + .../services/redis/dependency.py | 7 ++++--- ...tproject.py => test_{{cookiecutter.project_name}}.py} | 0 .../{{cookiecutter.project_name}}/web/__init__.py | 1 + .../{{cookiecutter.project_name}}/web/api/redis/views.py | 3 ++- pyproject.toml | 2 +- 8 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/__init__.py rename fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/{test_fastapitestproject.py => test_{{cookiecutter.project_name}}.py} (100%) create mode 100644 fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/__init__.py diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml b/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml index 1b7d87d..21067cc 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml +++ b/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml @@ -34,6 +34,9 @@ aiomysql = "^0.0.21" {%- if cookiecutter.enable_redis == "True" %} aioredis = {version = "^2.0.0", extras = ["hiredis"]} {%- endif %} +httptools = "^0.3.0" +async-exit-stack = "^1.0.1" +async-generator = "^1.10" [tool.poetry.dev-dependencies] pytest = "^6.0" diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py index 9e511d7..bb06c2b 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/db/dependencies.py @@ -13,7 +13,8 @@ async def get_db_session(request: Request) -> AsyncGenerator[AsyncSession, None] """ session: AsyncSession = request.app.state.db_session_factory() - yield session - - await session.commit() - await session.close() + try: # noqa: WPS501 + yield session + finally: + await session.commit() + await session.close() diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/__init__.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/__init__.py new file mode 100644 index 0000000..e6ef7b8 --- /dev/null +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/__init__.py @@ -0,0 +1 @@ +"""Services for {{cookiecutter.project_name}}.""" diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py index 986d336..1089ed6 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/services/redis/dependency.py @@ -15,6 +15,7 @@ async def get_redis_connection(request: Request) -> AsyncGenerator[Redis, None]: """ redis_client = Redis(connection_pool=request.app.state.redis_pool) - yield redis_client - - await redis_client.close() + try: # noqa: WPS501 + yield redis_client + finally: + await redis_client.close() diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_fastapitestproject.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py similarity index 100% rename from fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_fastapitestproject.py rename to fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/tests/test_{{cookiecutter.project_name}}.py diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/__init__.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/__init__.py new file mode 100644 index 0000000..852f710 --- /dev/null +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/__init__.py @@ -0,0 +1 @@ +"""WEB API for {{cookiecutter.project_name}}.""" diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py index aeb4d0d..5c2ab6b 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/redis/views.py @@ -38,4 +38,5 @@ async def set_value( :param redis_value: new value data. :param redis: redis connection. """ - await redis.set(name=redis_value.key, value=redis_value.value) + if redis_value.value is not None: + await redis.set(name=redis_value.key, value=redis_value.value) diff --git a/pyproject.toml b/pyproject.toml index 95563b9..dea1852 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fastapi_template" -version = "2.2.4" +version = "2.3.0" description = "Feature-rich robust FastAPI template" authors = ["Pavel Kirilin <win10@list.ru>"] packages = [ -- GitLab