mirror of
https://github.com/wassname/ray.git
synced 2026-06-27 18:44:07 +08:00
[serve] Don't overwrite self.handle in StarletteEndpoint (#14111)
This commit is contained in:
@@ -37,6 +37,9 @@ class ServeStarletteEndpoint:
|
||||
def __init__(self, client, endpoint_tag: EndpointTag):
|
||||
self.client = client
|
||||
self.endpoint_tag = endpoint_tag
|
||||
# This will be lazily populated when the first request comes in.
|
||||
# TODO(edoakes): we should be able to construct the handle here, but
|
||||
# that currently breaks pytest. This seems like a bug.
|
||||
self.handle = None
|
||||
|
||||
async def __call__(self, scope, receive, send):
|
||||
@@ -45,14 +48,15 @@ class ServeStarletteEndpoint:
|
||||
headers = {k.decode(): v.decode() for k, v in scope["headers"]}
|
||||
if self.handle is None:
|
||||
self.handle = self.client.get_handle(self.endpoint_tag, sync=False)
|
||||
self.handle = self.handle.options(
|
||||
|
||||
object_ref = await self.handle.options(
|
||||
method_name=headers.get("X-SERVE-CALL-METHOD".lower(),
|
||||
DEFAULT.VALUE),
|
||||
shard_key=headers.get("X-SERVE-SHARD-KEY".lower(), DEFAULT.VALUE),
|
||||
http_method=scope["method"].upper(),
|
||||
http_headers=headers)
|
||||
request = build_starlette_request(scope, http_body_bytes)
|
||||
object_ref = await self.handle.remote(request)
|
||||
http_headers=headers).remote(
|
||||
build_starlette_request(scope, http_body_bytes))
|
||||
|
||||
result = await object_ref
|
||||
|
||||
if isinstance(result, RayTaskError):
|
||||
|
||||
Reference in New Issue
Block a user