Media_Optimization / gradio_modal_deploy.py
Daniel-IADAR's picture
Upload folder using huggingface_hub
3ec62b4 verified
"""
Deploy Gradio Demo to Modal as a permanent web endpoint
This creates a permanent URL at: https://your-workspace--media-optimization-gradio-web.modal.run
"""
import modal
import os
# Create Modal app
app = modal.App("media-optimization-gradio")
# Image with required packages
image = modal.Image.debian_slim(python_version="3.11").pip_install(
"gradio>=4.44.1",
"modal>=0.60.0",
"pandas>=2.0.0",
"requests>=2.31.0",
"mysql-connector-python>=8.0.0",
"json-repair>=0.25.0",
"boto3>=1.28.0",
"python-dotenv>=1.0.0",
)
# Mount the necessary files
mounts = [
modal.Mount.from_local_file(
local_path="gradio_demo.py",
remote_path="/root/gradio_demo.py"
),
modal.Mount.from_local_file(
local_path="main_media.py",
remote_path="/root/main_media.py"
),
modal.Mount.from_local_file(
local_path="qwen3_omni_asyncllm_modal_client.py",
remote_path="/root/qwen3_omni_asyncllm_modal_client.py"
),
modal.Mount.from_local_file(
local_path="media_prompts.py",
remote_path="/root/media_prompts.py"
),
modal.Mount.from_local_file(
local_path="s3Client.py",
remote_path="/root/s3Client.py"
),
]
@app.function(
image=image,
mounts=mounts,
secrets=[
modal.Secret.from_name("media-optimization-secrets"), # Update with your secret name
],
keep_warm=1, # Keep one instance always warm (faster response)
)
@modal.web_server(8080, startup_timeout=60)
def web():
"""Serve Gradio app as a web endpoint"""
import sys
sys.path.insert(0, "/root")
from gradio_demo import demo
# Return the Gradio app configured for Modal
return demo