alessandro trinca tornidor
commited on
Commit
·
101b762
1
Parent(s):
bfaaa1e
[ci] handle missing static folder under PROJECT_ROOT_FOLDER using env WORKDIR with default on ROOT repository path
Browse files- samgis/__init__.py +1 -0
- wrappers/fastapi_wrapper.py +11 -13
samgis/__init__.py
CHANGED
|
@@ -8,6 +8,7 @@ from samgis.utilities.constants import SERVICE_NAME
|
|
| 8 |
|
| 9 |
ROOT = Path(globals().get("__file__", "./_")).absolute().parent.parent
|
| 10 |
PROJECT_ROOT_FOLDER = Path(os.getenv("PROJECT_ROOT_FOLDER", ROOT))
|
|
|
|
| 11 |
MODEL_FOLDER = Path(PROJECT_ROOT_FOLDER / "machine_learning_models")
|
| 12 |
|
| 13 |
IS_AWS_LAMBDA = bool(os.getenv("IS_AWS_LAMBDA", ""))
|
|
|
|
| 8 |
|
| 9 |
ROOT = Path(globals().get("__file__", "./_")).absolute().parent.parent
|
| 10 |
PROJECT_ROOT_FOLDER = Path(os.getenv("PROJECT_ROOT_FOLDER", ROOT))
|
| 11 |
+
WORKDIR = Path(os.getenv("WORKDIR", ROOT))
|
| 12 |
MODEL_FOLDER = Path(PROJECT_ROOT_FOLDER / "machine_learning_models")
|
| 13 |
|
| 14 |
IS_AWS_LAMBDA = bool(os.getenv("IS_AWS_LAMBDA", ""))
|
wrappers/fastapi_wrapper.py
CHANGED
|
@@ -8,7 +8,7 @@ from fastapi.responses import FileResponse, JSONResponse
|
|
| 8 |
from fastapi.staticfiles import StaticFiles
|
| 9 |
from pydantic import ValidationError
|
| 10 |
|
| 11 |
-
from samgis import PROJECT_ROOT_FOLDER
|
| 12 |
from samgis.utilities.type_hints import ApiRequestBody, StringPromptApiRequestBody
|
| 13 |
from samgis_core.utilities.fastapi_logger import setup_logging
|
| 14 |
|
|
@@ -17,12 +17,6 @@ app_logger = setup_logging(debug=True)
|
|
| 17 |
app = FastAPI()
|
| 18 |
|
| 19 |
|
| 20 |
-
try:
|
| 21 |
-
app_logger.info(f"PROJECT_ROOT_FOLDER:{PROJECT_ROOT_FOLDER}.")
|
| 22 |
-
except Exception as e:
|
| 23 |
-
app_logger.error(f"e:{e}.")
|
| 24 |
-
|
| 25 |
-
|
| 26 |
@app.middleware("http")
|
| 27 |
async def request_middleware(request, call_next):
|
| 28 |
request_id = str(uuid.uuid4())
|
|
@@ -107,10 +101,14 @@ def infer_lisa(request_input: StringPromptApiRequestBody) -> JSONResponse:
|
|
| 107 |
return JSONResponse(status_code=200, content={"body": json.dumps(body)})
|
| 108 |
except Exception as inference_exception:
|
| 109 |
import subprocess
|
| 110 |
-
|
| 111 |
f"ls -l {PROJECT_ROOT_FOLDER}/", shell=True, universal_newlines=True, stdout=subprocess.PIPE
|
| 112 |
)
|
| 113 |
-
app_logger.error(f"'ls -l' command output: {
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
app_logger.error(f"inference error:{inference_exception}.")
|
| 115 |
raise HTTPException(
|
| 116 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Internal server error on inference")
|
|
@@ -186,20 +184,20 @@ async def http_exception_handler(request: Request, exc: HTTPException) -> JSONRe
|
|
| 186 |
|
| 187 |
|
| 188 |
# important: the index() function and the app.mount MUST be at the end
|
| 189 |
-
app.mount("/lisa", StaticFiles(directory=
|
| 190 |
|
| 191 |
|
| 192 |
@app.get("/lisa")
|
| 193 |
async def lisa() -> FileResponse:
|
| 194 |
-
return FileResponse(path=
|
| 195 |
|
| 196 |
|
| 197 |
-
app.mount("/", StaticFiles(directory=
|
| 198 |
|
| 199 |
|
| 200 |
@app.get("/")
|
| 201 |
async def index() -> FileResponse:
|
| 202 |
-
return FileResponse(path=
|
| 203 |
|
| 204 |
|
| 205 |
if __name__ == '__main__':
|
|
|
|
| 8 |
from fastapi.staticfiles import StaticFiles
|
| 9 |
from pydantic import ValidationError
|
| 10 |
|
| 11 |
+
from samgis import PROJECT_ROOT_FOLDER, WORKDIR
|
| 12 |
from samgis.utilities.type_hints import ApiRequestBody, StringPromptApiRequestBody
|
| 13 |
from samgis_core.utilities.fastapi_logger import setup_logging
|
| 14 |
|
|
|
|
| 17 |
app = FastAPI()
|
| 18 |
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
@app.middleware("http")
|
| 21 |
async def request_middleware(request, call_next):
|
| 22 |
request_id = str(uuid.uuid4())
|
|
|
|
| 101 |
return JSONResponse(status_code=200, content={"body": json.dumps(body)})
|
| 102 |
except Exception as inference_exception:
|
| 103 |
import subprocess
|
| 104 |
+
project_root_folder_content = subprocess.run(
|
| 105 |
f"ls -l {PROJECT_ROOT_FOLDER}/", shell=True, universal_newlines=True, stdout=subprocess.PIPE
|
| 106 |
)
|
| 107 |
+
app_logger.error(f"project_root folder 'ls -l' command output: {project_root_folder_content.stdout}.")
|
| 108 |
+
workdir_folder_content = subprocess.run(
|
| 109 |
+
f"ls -l {WORKDIR}/", shell=True, universal_newlines=True, stdout=subprocess.PIPE
|
| 110 |
+
)
|
| 111 |
+
app_logger.error(f"workdir folder 'ls -l' command output: {workdir_folder_content.stdout}.")
|
| 112 |
app_logger.error(f"inference error:{inference_exception}.")
|
| 113 |
raise HTTPException(
|
| 114 |
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Internal server error on inference")
|
|
|
|
| 184 |
|
| 185 |
|
| 186 |
# important: the index() function and the app.mount MUST be at the end
|
| 187 |
+
app.mount("/lisa", StaticFiles(directory=WORKDIR / "static" / "dist", html=True), name="lisa")
|
| 188 |
|
| 189 |
|
| 190 |
@app.get("/lisa")
|
| 191 |
async def lisa() -> FileResponse:
|
| 192 |
+
return FileResponse(path=WORKDIR / "static" / "dist" / "lisa.html", media_type="text/html")
|
| 193 |
|
| 194 |
|
| 195 |
+
app.mount("/", StaticFiles(directory=WORKDIR / "static" / "dist", html=True), name="static")
|
| 196 |
|
| 197 |
|
| 198 |
@app.get("/")
|
| 199 |
async def index() -> FileResponse:
|
| 200 |
+
return FileResponse(path=WORKDIR / "static" / "dist" / "index.html", media_type="text/html")
|
| 201 |
|
| 202 |
|
| 203 |
if __name__ == '__main__':
|