Spaces:
Paused
Paused
alessandro trinca tornidor
feat: add support for compiling a custom frontend using pnpm and nodejs v18 from debian packages
c13c67e
import logging | |
import os | |
import sys | |
import gradio as gr | |
import uvicorn | |
from fastapi import FastAPI | |
from fastapi.responses import FileResponse | |
from fastapi.staticfiles import StaticFiles | |
from fastapi.templating import Jinja2Templates | |
from spaces import GPU as SPACES_GPU | |
from lisa_on_cuda import routes | |
from lisa_on_cuda.utils import app_helpers, session_logger, utils | |
from lisa_on_cuda.utils import frontend_builder | |
LOGLEVEL = os.getenv('LOGLEVEL', 'INFO').upper() | |
session_logger.change_logging(LOGLEVEL) | |
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=frontend_builder.env_project_root_folder, | |
input_css_path=frontend_builder.env_input_css_path, | |
output_dist_folder=utils.FASTAPI_STATIC / "dist" | |
) | |
logging.info("build_frontend ok!") | |
os.makedirs(utils.FASTAPI_STATIC, exist_ok=True) | |
app.mount(CUSTOM_STATIC_PATH, StaticFiles(directory=utils.FASTAPI_STATIC / "dist"), name="static") | |
async def static() -> FileResponse: | |
return FileResponse(path=str(utils.FASTAPI_STATIC / "dist" / "index.html"), media_type="text/html") | |
templates = Jinja2Templates(directory="templates") | |
app_helpers.app_logger.info(f"sys.argv:{sys.argv}.") | |
args = app_helpers.parse_args([]) | |
app_helpers.app_logger.info(f"prepared default arguments:{args}.") | |
inference_fn = app_helpers.get_inference_model_by_args(args, inference_decorator=SPACES_GPU) | |
app_helpers.app_logger.info(f"prepared inference_fn function:{inference_fn.__name__}, creating gradio interface...") | |
io = app_helpers.get_gradio_interface(inference_fn) | |
app_helpers.app_logger.info("created gradio interface") | |
app = gr.mount_gradio_app(app, io, path=CUSTOM_GRADIO_PATH) | |
app_helpers.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 | |