chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# flake8: noqa
|
||||
# fmt: off
|
||||
|
||||
# __example_deployment_start__
|
||||
import time
|
||||
from ray import serve
|
||||
from starlette.requests import Request
|
||||
|
||||
@serve.deployment(
|
||||
# Each replica will be sent 2 requests at a time.
|
||||
max_ongoing_requests=2,
|
||||
# Each caller queues up to 2 requests at a time.
|
||||
# (beyond those that are sent to replicas).
|
||||
max_queued_requests=2,
|
||||
)
|
||||
class SlowDeployment:
|
||||
def __call__(self, request: Request) -> str:
|
||||
# Emulate a long-running request, such as ML inference.
|
||||
time.sleep(2)
|
||||
return "Hello!"
|
||||
# __example_deployment_end__
|
||||
|
||||
# __client_test_start__
|
||||
import ray
|
||||
import aiohttp
|
||||
|
||||
@ray.remote
|
||||
class Requester:
|
||||
async def do_request(self) -> int:
|
||||
async with aiohttp.ClientSession("http://localhost:8000/") as session:
|
||||
return (await session.get("/")).status
|
||||
|
||||
r = Requester.remote()
|
||||
serve.run(SlowDeployment.bind())
|
||||
|
||||
# Send 4 requests first.
|
||||
# 2 of these will be sent to the replica. These requests take a few seconds to execute.
|
||||
first_refs = [r.do_request.remote() for _ in range(2)]
|
||||
_, pending = ray.wait(first_refs, timeout=1)
|
||||
assert len(pending) == 2
|
||||
# 2 will be queued in the proxy.
|
||||
queued_refs = [r.do_request.remote() for _ in range(2)]
|
||||
_, pending = ray.wait(queued_refs, timeout=0.1)
|
||||
assert len(pending) == 2
|
||||
|
||||
# Send an additional 5 requests. These will be rejected immediately because
|
||||
# the replica and the proxy queue are already full.
|
||||
for status_code in ray.get([r.do_request.remote() for _ in range(5)]):
|
||||
assert status_code == 503
|
||||
|
||||
# The initial requests will finish successfully.
|
||||
for ref in first_refs:
|
||||
print(f"Request finished with status code {ray.get(ref)}.")
|
||||
|
||||
# __client_test_end__
|
||||
Reference in New Issue
Block a user