| 1234567891011121314151617181920212223242526272829303132 |
- import logging
- from typing import Callable
- from ray import serve
- from ray.serve._private.constants import SERVE_LOGGER_NAME
- from ray.serve._private.http_util import ASGIAppReplicaWrapper
- from ray.util.annotations import PublicAPI
- try:
- from gradio import Blocks, routes
- except ModuleNotFoundError:
- print("Gradio isn't installed. Run `pip install gradio` to install Gradio.")
- raise
- logger = logging.getLogger(SERVE_LOGGER_NAME)
- @PublicAPI(stability="alpha")
- class GradioIngress(ASGIAppReplicaWrapper):
- """User-facing class that wraps a Gradio App in a Serve Deployment."""
- def __init__(self, builder: Callable[[], Blocks]):
- """Builds and wraps an ASGI app from the provided builder.
- The builder should take no arguments and return a Gradio App (of type Interface
- or Blocks).
- """
- io: Blocks = builder()
- super().__init__(routes.App.create_app(io))
- GradioServer = serve.deployment(GradioIngress)
|