Files
ray-project--ray/doc/source/serve/doc_code/interdeployment_grpc.py
T
2026-07-13 13:17:40 +08:00

33 lines
936 B
Python

# flake8: noqa
from ray import serve
from ray.serve.handle import DeploymentHandle
# __start_grpc_override__
@serve.deployment
class Caller:
def __init__(self, target: DeploymentHandle):
# Override this specific handle to use actor RPC instead of gRPC.
# This is useful for large payloads (over ~1 MB) where passing
# objects by reference through Ray's object store is more efficient.
self._target = target.options(_by_reference=True)
async def __call__(self, data: bytes) -> str:
return await self._target.remote(data)
@serve.deployment
class LargePayloadProcessor:
def __call__(self, data: bytes) -> str:
return f"processed {len(data)} bytes"
processor = LargePayloadProcessor.bind()
app = Caller.bind(processor)
handle: DeploymentHandle = serve.run(app)
assert handle.remote(b"x" * 1024).result() == "processed 1024 bytes"
# __end_grpc_override__
serve.shutdown()