Add test client for image classification server
This commit is contained in:
61
test.py
Normal file
61
test.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import argparse
|
||||
import base64
|
||||
import json
|
||||
from pathlib import Path
|
||||
from urllib import error, request
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Send an image classification request to the local server."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--url",
|
||||
default="http://127.0.0.1:8000/v1/classify",
|
||||
help="Classify endpoint URL.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--image",
|
||||
default="cats_image.jpeg",
|
||||
help="Image path to upload.",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
image_path = Path(args.image)
|
||||
if not image_path.exists():
|
||||
raise FileNotFoundError(f"image not found: {image_path}")
|
||||
|
||||
payload = {
|
||||
"image": base64.b64encode(image_path.read_bytes()).decode("utf-8"),
|
||||
"image_name": image_path.name,
|
||||
}
|
||||
data = json.dumps(payload).encode("utf-8")
|
||||
|
||||
req = request.Request(
|
||||
args.url,
|
||||
data=data,
|
||||
headers={"Content-Type": "application/json"},
|
||||
method="POST",
|
||||
)
|
||||
|
||||
try:
|
||||
with request.urlopen(req) as resp:
|
||||
body = resp.read().decode("utf-8")
|
||||
print(f"status_code: {resp.status}")
|
||||
print("response:")
|
||||
print(body)
|
||||
except error.HTTPError as exc:
|
||||
body = exc.read().decode("utf-8", errors="replace")
|
||||
print(f"status_code: {exc.code}")
|
||||
print("response:")
|
||||
print(body)
|
||||
raise
|
||||
except error.URLError as exc:
|
||||
raise RuntimeError(f"request failed: {exc}") from exc
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user