import logging import gradio as gr import uvicorn from fastapi import FastAPI import routes from helpers import formatters, session_logger session_logger.change_logging() app = FastAPI(title="fastapi_with_gradio...", version="1.0") logging.info("FastAPI app created, including routes...") app.include_router(routes.router) logging.info("routes included, creating gradio app") CUSTOM_GRADIO_PATH = "/" def get_gradio_app(): with gr.Blocks() as gradio_app: gr.Markdown( """ # Hello World! Start typing below to _see_ the *output*. Here a [link](https://huggingface.co/spaces/aletrn/gradio_with_fastapi). """) btn = gr.Button(value="Divide et Impera") btn.click( formatters.request_formatter, inputs=[ gr.Textbox(lines=1, placeholder="10", label="write an integer to divide 100; 0 will raise ZeroDivisionError") ], outputs=[ gr.Textbox(lines=1, placeholder=None, label="Text Output") ] ) return gradio_app logging.info("mounting gradio app within FastAPI...") gradio_app_md = get_gradio_app() app = gr.mount_gradio_app(app, gradio_app_md, path=CUSTOM_GRADIO_PATH) logging.info("gradio app mounted") if __name__ == '__main__': uvicorn.run(app, host="0.0.0.0", port=7860)