Spaces:
Running
on
Zero
Running
on
Zero
| # ---------- MUST BE FIRST ---------- | |
| import os | |
| os.environ.setdefault("GRADIO_USE_CDN", "true") | |
| import spaces | |
| import gradio as gr | |
| from fastapi import FastAPI | |
| from starlette.responses import PlainTextResponse | |
| try: | |
| from starlette.exceptions import ClientDisconnect # Starlette β₯0.27 | |
| except Exception: | |
| from starlette.requests import ClientDisconnect # fallback | |
| # Log versions to container logs for sanity | |
| try: | |
| print("== Sanity ==") | |
| print("spaces.__version__:", getattr(spaces, "__version__", "unknown")) | |
| import gradio | |
| print("gradio.__version__:", getattr(gradio, "__version__", "unknown")) | |
| import sys | |
| print("python:", sys.version) | |
| print("SPACE_RUNTIME:", os.getenv("SPACE_RUNTIME")) | |
| print("HF_SPACE_ENTRYPOINT default: app.py") | |
| except Exception as _e: | |
| print("version log error:", _e) | |
| # ---------- ZeroGPU probes (PUBLIC NAMES) ---------- | |
| def gpu_probe(a: int = 1, b: int = 1) -> int: | |
| # Not called; existence is enough for ZeroGPU startup check | |
| return a + b | |
| def gpu_echo(x: str = "ok") -> str: | |
| return x | |
| # ---------- Tiny Gradio UI ---------- | |
| with gr.Blocks(title="ZeroGPU Probe") as demo: | |
| gr.Markdown("### β Minimal app is running.\n" | |
| "If you see this UI, import succeeded and GPU probes are registered.") | |
| t = gr.Textbox(label="Echo input", value="hello") | |
| o = gr.Textbox(label="Echo output") | |
| t.submit(lambda s: f"echo: {s}", t, o) | |
| demo = demo.queue(max_size=8) | |
| # ---------- ASGI app with fast health ---------- | |
| app = FastAPI() | |
| def _health(): | |
| return {"ok": True} | |
| async def client_disconnect_handler(request, exc): | |
| return PlainTextResponse("Client disconnected", status_code=499) | |
| # Mount at root (Spaces health-check expects this) | |
| app = gr.mount_gradio_app(app, demo, path="/") | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=7860) | |