ray
ray copied to clipboard
[Serve] Port 8000 GET root endpoint should not be exposed
What happened + What you expected to happen
Sends a GET request to localhost:8000 shows the following error.
Unexpected error, traceback: [36mray::ServeReplica:mobilenet:ImageClassifier.handle_request_streaming()[39m (pid=768, ip=10.244.0.18)
File "/home/ray/anaconda3/lib/python3.8/site-packages/ray/serve/_private/utils.py", line 165, in wrap_to_ray_error
raise exception
File "/home/ray/anaconda3/lib/python3.8/site-packages/ray/serve/_private/replica.py", line 895, in call_user_method
result = await method_to_call(*request_args, **request_kwargs)
File "/tmp/ray/session_2024-08-23_21-13-49_235633_14/runtime_resources/working_dir_files/https_github_com_ray-project_serve_config_examples_archive_b393e77bbd6aba0881e3d94c05f968f05a387b96/mobilenet/mobilenet.py", line 25, in __call__
image_file = await request["image"].read()
File "/home/ray/anaconda3/lib/python3.8/site-packages/starlette/datastructures.py", line 310, in __getitem__
return self._dict[key]
KeyError: 'image'.
This REST endpoint should not be exposed to users.
Note: I would like to work on this issue if this behavior is not expected.
Versions / Dependencies
2.34.0
Reproduction script
Follow this doc https://docs.ray.io/en/releases-2.34.0/cluster/kubernetes/examples/mobilenet-rayservice.html
Issue Severity
None
cc @kevin85421
cc @edoakes is this an expected behavior? If so, should we expose a better error message?
I don't understand the issue, it looks like the example code is just not gracefully handling the case where image isn't provided in the request body?
@edoakes Is the GET / endpoint used? @kevin85421 told me that only the POST / endpoint is used. So if this endpoint is not used, it should better be hiden from the user. If this endpoint is used, then I'll change the issue description or close this issue.
There seem to be some examples (https://docs.ray.io/en/latest/serve/key-concepts.html) using GET in the Ray Serve examples. It’s unclear to me when to use GET and when to use POST and which API endpoints will be created.
This is up to the application's REST API design
@edoakes Thank you for your clarification. I closed this and opened a new one in https://github.com/ray-project/serve_config_examples/issues/10