Skip to content

Commit af1ee83

Browse files
authored
Ensure session is closed (#139)(patch)
Add middleware to ensure the db session is closed before sending the response, so that the connection is released.
1 parent 4bd4267 commit af1ee83

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

genotype_api/api/app.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
from fastapi.responses import JSONResponse
88
from fastapi.middleware.cors import CORSMiddleware
99

10+
from genotype_api.api.middleware import DBSessionMiddleware
1011
from genotype_api.config import security_settings, settings
11-
from genotype_api.database.database import create_all_tables, initialise_database, close_session
12+
from genotype_api.database.database import create_all_tables, initialise_database
1213
from genotype_api.api.endpoints import samples, snps, users, plates, analyses
1314
from sqlalchemy.exc import NoResultFound
1415

@@ -24,6 +25,7 @@
2425
allow_methods=["*"],
2526
allow_headers=["*"],
2627
)
28+
app.add_middleware(DBSessionMiddleware)
2729

2830

2931
@app.exception_handler(NoResultFound)

genotype_api/api/middleware.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from fastapi import Request
2+
from starlette.middleware.base import BaseHTTPMiddleware
3+
from genotype_api.database.database import close_session
4+
5+
6+
class DBSessionMiddleware(BaseHTTPMiddleware):
7+
def __init__(self, app):
8+
super().__init__(app)
9+
10+
async def dispatch(self, request: Request, call_next):
11+
response = await call_next(request)
12+
close_session()
13+
return response

0 commit comments

Comments
 (0)