Ideas / app.py
qqwjq1981's picture
Update app.py
f8ebc27 verified
raw
history blame
1.28 kB
import gradio as gr
import fastapi
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
import uvicorn
import os
import logging
from pathlib import Path
logging.basicConfig(level=logging.DEBUG)
# Create FastAPI app
app = FastAPI()
# Function for Gradio button
def on_button_click():
return "Button clicked!"
# Create Gradio Blocks app
with gr.Blocks() as demo:
button = gr.Button("Click Me")
output = gr.Textbox()
button.click(on_button_click, inputs=[], outputs=[output])
# Create ASGI app for Gradio
gradio_asgi_app = demo.launch(share=False, inbrowser=False, server_name="0.0.0.0", server_port=7860, inline=False)
# Mount the Gradio ASGI app onto FastAPI at "/gradio"
app.mount("/gradio", gradio_asgi_app)
# Static files directory for FastAPI
static_dir = Path('./static')
static_dir.mkdir(parents=True, exist_ok=True)
app.mount("/static", StaticFiles(directory=static_dir), name="static")
# Check Gradio and FastAPI versions
logging.debug(f"Gradio version: {gr.__version__}")
logging.debug(f"FastAPI version: {fastapi.__version__}")
# Run the FastAPI server using uvicorn
if __name__ == "__main__":
port = int(os.getenv("PORT", 7860)) # Default to 7860 if PORT is not set
uvicorn.run(app, host="0.0.0.0", port=port)