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") text_input = gr.Textbox(lines=1, placeholder="10", label="write an integer to divide 100; 0 will raise ZeroDivisionError") text_output = gr.Textbox(lines=1, placeholder=None, label="Text Output") gr.Examples( examples=[19, 1, -7, 0], inputs=[text_input], ) btn.click( formatters.request_formatter, inputs=[text_input], outputs=[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)