ray.serve.get_部署句柄#

ray.serve.get_deployment_handle(deployment_name: str, app_name: str | None = None, _check_exists: bool = True, _record_telemetry: bool = True) DeploymentHandle[源代码]#

通过名称获取部署的句柄。

这是一个开发者API,适用于高级Ray用户和库开发者。

参数:
  • deployment_name – 要获取句柄的部署名称。

  • app_name – 部署所在的应用程序。如果在 Serve 应用程序内部调用且未指定 app_name,则默认为调用此 API 的应用程序。

抛出:

RayServeException – 如果没有运行 Serve 控制器,或者从 Serve 应用程序外部调用且未指定应用程序名称。

以下示例获取应用程序的入口部署的句柄,这等同于使用 serve.get_app_handle

import ray
from ray import serve

@serve.deployment
def f(val: int) -> int:
    return val * 2

serve.run(f.bind(), name="my_app")
handle = serve.get_deployment_handle("f", app_name="my_app")
assert handle.remote(3).result() == 6

serve.shutdown()

以下示例展示了如何使用此API获取应用程序中非入口部署的句柄。

import ray
from ray import serve
from ray.serve.handle import DeploymentHandle

@serve.deployment
class Multiplier:
    def __init__(self, multiple: int):
        self._multiple = multiple

    def __call__(self, val: int) -> int:
        return val * self._multiple

@serve.deployment
class Adder:
    def __init__(self, handle: DeploymentHandle, increment: int):
        self._handle = handle
        self._increment = increment

    async def __call__(self, val: int) -> int:
        return await self._handle.remote(val) + self._increment


# The app calculates 2 * x + 3
serve.run(Adder.bind(Multiplier.bind(2), 3), name="math_app")
handle = serve.get_app_handle("math_app")
assert handle.remote(5).result() == 13

# Get handle to Multiplier only
handle = serve.get_deployment_handle("Multiplier", app_name="math_app")
assert handle.remote(5).result() == 10

serve.shutdown()

开发者API: 此API可能会在Ray的次要版本之间发生变化。