chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import ray
|
||||
from ray.serve._private.constants import SERVE_CONTROLLER_NAME, SERVE_NAMESPACE
|
||||
from ray.serve._private.default_impl import get_controller_impl
|
||||
from ray.serve.config import HTTPOptions, ProxyLocation
|
||||
from ray.serve.schema import LoggingConfig
|
||||
|
||||
|
||||
@ray.remote(num_cpus=0)
|
||||
class ServeControllerAvatar:
|
||||
"""A hack that proxy the creation of async actors from Java.
|
||||
|
||||
To be removed after https://github.com/ray-project/ray/pull/26037
|
||||
|
||||
Java api can not support python async actor. If we use java api create
|
||||
python async actor. The async init method won't be executed. The async
|
||||
method will fail with pickle error. And the run_control_loop of controller
|
||||
actor can't be executed too. We use this proxy actor create python async
|
||||
actor to avoid the above problem.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
http_proxy_port: int = 8000,
|
||||
):
|
||||
try:
|
||||
self._controller = ray.get_actor(
|
||||
SERVE_CONTROLLER_NAME, namespace=SERVE_NAMESPACE
|
||||
)
|
||||
except ValueError:
|
||||
self._controller = None
|
||||
if self._controller is None:
|
||||
controller_impl = get_controller_impl()
|
||||
# This Java bootstrap builds HTTPOptions directly and previously
|
||||
# relied on the (now removed) HeadOnly default of
|
||||
# HTTPOptions.location. Pass proxy_location explicitly to preserve
|
||||
# head-only proxy placement on multi-node clusters.
|
||||
self._controller = controller_impl.remote(
|
||||
http_options=HTTPOptions(port=http_proxy_port),
|
||||
proxy_location=ProxyLocation.HeadOnly,
|
||||
global_logging_config=LoggingConfig(),
|
||||
)
|
||||
|
||||
def check_alive(self) -> None:
|
||||
"""No-op to check if this actor is alive."""
|
||||
return
|
||||
Reference in New Issue
Block a user