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的次要版本之间发生变化。