Skip to content

Commit d205d57

Browse files
authored
Middleware session (#79)
* Adds middleware & try catch to ensure sessions are returned * remove comments * Reverts unnecessary change
1 parent aecc46b commit d205d57

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

app.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
from fastapi import FastAPI, responses, status
2+
from fastapi import FastAPI, responses, status, Request
33
import controller
44
from data import data_type
55
from typing import List, Dict, Tuple
@@ -22,6 +22,19 @@
2222
)
2323

2424

25+
@app.middleware("http")
26+
async def handle_db_session(request: Request, call_next):
27+
session_token = general.get_ctx_token()
28+
29+
request.state.session_token = session_token
30+
try:
31+
response = await call_next(request)
32+
finally:
33+
general.remove_and_refresh_session(session_token)
34+
35+
return response
36+
37+
2538
@app.get("/classification/recommend/{data_type}")
2639
def recommendations(
2740
data_type: str,
@@ -122,30 +135,24 @@ def embed(request: data_type.EmbeddingRequest) -> responses.PlainTextResponse:
122135

123136
@app.delete("/delete/{project_id}/{embedding_id}")
124137
def delete_embedding(project_id: str, embedding_id: str) -> responses.PlainTextResponse:
125-
session_token = general.get_ctx_token()
126138
status_code = controller.delete_embedding(project_id, embedding_id)
127-
general.remove_and_refresh_session(session_token)
128139
return responses.PlainTextResponse(status_code=status_code)
129140

130141

131142
@app.post("/upload_tensor_data/{project_id}/{embedding_id}")
132143
def upload_tensor_data(
133144
project_id: str, embedding_id: str
134145
) -> responses.PlainTextResponse:
135-
session_token = general.get_ctx_token()
136146
controller.upload_embedding_as_file(project_id, embedding_id)
137147
request_util.post_embedding_to_neural_search(project_id, embedding_id)
138-
general.remove_and_refresh_session(session_token)
139148
return responses.PlainTextResponse(status_code=status.HTTP_200_OK)
140149

141150

142151
@app.post("/re_embed_records/{project_id}")
143152
def re_embed_record(
144153
project_id: str, request: data_type.EmbeddingRebuildRequest
145154
) -> responses.PlainTextResponse:
146-
session_token = general.get_ctx_token()
147155
controller.re_embed_records(project_id, request.changes)
148-
general.remove_and_refresh_session(session_token)
149156
return responses.PlainTextResponse(status_code=status.HTTP_200_OK)
150157

151158

0 commit comments

Comments
 (0)