mirror of
https://github.com/wassname/ray.git
synced 2026-06-29 09:22:57 +08:00
[Serve] Unwrap Flask Request from ServeHandle (#10845)
This commit is contained in:
@@ -84,6 +84,28 @@ def test_handle_http_args(serve_instance):
|
||||
resp["headers"]["X-Custom-Header"] == "value"
|
||||
|
||||
|
||||
def test_handle_inject_flask_request(serve_instance):
|
||||
client = serve_instance
|
||||
|
||||
def echo_request_type(request):
|
||||
return str(type(request))
|
||||
|
||||
client.create_backend("echo:v0", echo_request_type)
|
||||
client.create_endpoint("echo", backend="echo:v0", route="/echo")
|
||||
|
||||
def wrapper_model(web_request):
|
||||
handle = serve.connect().get_handle("echo")
|
||||
return ray.get(handle.remote(web_request))
|
||||
|
||||
client.create_backend("wrapper:v0", wrapper_model)
|
||||
client.create_endpoint("wrapper", backend="wrapper:v0", route="/wrapper")
|
||||
|
||||
for route in ["/echo", "/wrapper"]:
|
||||
resp = requests.get(f"http://127.0.0.1:8000{route}")
|
||||
request_type = resp.text
|
||||
assert request_type == "<class 'flask.wrappers.Request'>"
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
import pytest
|
||||
|
||||
@@ -15,6 +15,7 @@ from collections import UserDict
|
||||
import requests
|
||||
import numpy as np
|
||||
import pydantic
|
||||
import flask
|
||||
|
||||
import ray
|
||||
from ray.serve.constants import HTTP_PROXY_TIMEOUT
|
||||
@@ -88,8 +89,15 @@ def parse_request_item(request_item):
|
||||
asgi_scope, body_bytes = request_item.args
|
||||
return build_flask_request(asgi_scope, io.BytesIO(body_bytes))
|
||||
else:
|
||||
arg = request_item.args[0] if len(request_item.args) == 1 else None
|
||||
|
||||
# If the input data from handle is web request, we don't need to wrap
|
||||
# it in ServeRequest.
|
||||
if isinstance(arg, flask.Request):
|
||||
return arg
|
||||
|
||||
return ServeRequest(
|
||||
request_item.args[0] if len(request_item.args) == 1 else None,
|
||||
arg,
|
||||
request_item.kwargs,
|
||||
headers=request_item.metadata.http_headers,
|
||||
method=request_item.metadata.http_method,
|
||||
|
||||
Reference in New Issue
Block a user