chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# flake8: noqa
|
||||
# __chaining_example_start__
|
||||
# File name: chain.py
|
||||
from ray import serve
|
||||
from ray.serve.handle import DeploymentHandle, DeploymentResponse
|
||||
|
||||
|
||||
@serve.deployment
|
||||
class Adder:
|
||||
def __init__(self, increment: int):
|
||||
self._increment = increment
|
||||
|
||||
def __call__(self, val: int) -> int:
|
||||
return val + self._increment
|
||||
|
||||
|
||||
@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 Ingress:
|
||||
def __init__(self, adder: DeploymentHandle, multiplier: DeploymentHandle):
|
||||
self._adder = adder
|
||||
self._multiplier = multiplier
|
||||
|
||||
async def __call__(self, input: int) -> int:
|
||||
adder_response: DeploymentResponse = self._adder.remote(input)
|
||||
# Pass the adder response directly into the multiplier (no `await` needed).
|
||||
multiplier_response: DeploymentResponse = self._multiplier.remote(
|
||||
adder_response
|
||||
)
|
||||
# `await` the final chained response.
|
||||
return await multiplier_response
|
||||
|
||||
|
||||
app = Ingress.bind(
|
||||
Adder.bind(increment=1),
|
||||
Multiplier.bind(multiple=2),
|
||||
)
|
||||
|
||||
handle: DeploymentHandle = serve.run(app)
|
||||
response = handle.remote(5)
|
||||
assert response.result() == 12, "(5 + 1) * 2 = 12"
|
||||
# __chaining_example_end__
|
||||
Reference in New Issue
Block a user