Spaces:
Paused
Paused
File size: 2,950 Bytes
cc47f6d 326115c a84a5a1 19270a8 b0660fb 719ecfd cc47f6d b0660fb cc47f6d 719ecfd c13c67e a84a5a1 cc47f6d cd399d1 b0660fb e5c9ee0 cc47f6d b0660fb c13c67e 326115c cc47f6d 326115c c5fe4a2 c13c67e 8959fb9 3bd20e4 c13c67e cc47f6d c13c67e cc47f6d c13c67e cc47f6d c13c67e cc47f6d c13c67e a84a5a1 cc47f6d 8959fb9 cc47f6d b0660fb cc47f6d f623930 cc47f6d b0660fb c13c67e b0660fb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import json
import logging
import os
import sys
from pathlib import Path
import gradio as gr
import structlog
import uvicorn
from dotenv import load_dotenv
from fastapi import FastAPI
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from samgis_core.utilities import create_folders_if_not_exists
from samgis_core.utilities import frontend_builder
from samgis_core.utilities.session_logger import setup_logging
# for some reason this do
from spaces import GPU as SPACES_GPU
from lisa_on_cuda.utils import app_helpers
from lisa_on_cuda import routes
load_dotenv()
project_root_folder = Path(globals().get("__file__", "./_")).absolute().parent
workdir = os.getenv("WORKDIR", project_root_folder)
model_folder = Path(project_root_folder / "machine_learning_models")
log_level = os.getenv("LOG_LEVEL", "INFO")
setup_logging(log_level=log_level)
app_logger = structlog.stdlib.get_logger()
app_logger.info(f"PROJECT_ROOT_FOLDER:{project_root_folder}, WORKDIR:{workdir}.")
folders_map = os.getenv("FOLDERS_MAP", "{}")
markdown_text = os.getenv("MARKDOWN_TEXT", "")
examples_text_list = os.getenv("EXAMPLES_TEXT_LIST", "").split("\n")
example_body = json.loads(os.getenv("EXAMPLE_BODY", "{}"))
mount_gradio_app = bool(os.getenv("MOUNT_GRADIO_APP", ""))
static_dist_folder = Path(project_root_folder) / "static" / "dist"
input_css_path = os.getenv("INPUT_CSS_PATH", "src/input.css")
create_folders_if_not_exists.folders_creation(folders_map)
CUSTOM_GRADIO_PATH = "/"
CUSTOM_STATIC_PATH = "/static"
FASTAPI_TITLE = "lisa_app"
app = FastAPI(title=FASTAPI_TITLE, version="1.0")
app.include_router(routes.router)
frontend_builder.build_frontend(
project_root_folder=workdir,
input_css_path=input_css_path,
output_dist_folder=static_dist_folder
)
app_logger.info("build_frontend ok!")
app.mount(CUSTOM_STATIC_PATH, StaticFiles(directory=static_dist_folder), name="static")
@app.get(CUSTOM_STATIC_PATH)
async def static() -> FileResponse:
return FileResponse(path=str(static_dist_folder / "index.html"), media_type="text/html")
templates = Jinja2Templates(directory="templates")
app_logger.info(f"sys.argv:{sys.argv}.")
args = app_helpers.parse_args([])
app_logger.info(f"prepared default arguments:{args}.")
inference_fn = app_helpers.get_inference_model_by_args(args, inference_decorator=SPACES_GPU)
app_logger.info(f"prepared inference_fn function:{inference_fn.__name__}, creating gradio interface...")
io = app_helpers.get_gradio_interface(inference_fn, args=args)
app_logger.info("created gradio interface")
app = gr.mount_gradio_app(app, io, path=CUSTOM_GRADIO_PATH)
app_logger.info("mounted gradio app within fastapi")
if __name__ == '__main__':
try:
uvicorn.run(app, host="0.0.0.0", port=7860)
except Exception as ex:
logging.error(f"fastapi/gradio application {FASTAPI_TITLE} exception:{ex}.")
raise ex
|