2025-08-20 11:54:40 +01:00

68 lines
2.1 KiB
Python

from flask import Flask
from flask import request, jsonify
from flask_cors import CORS
import performance_test
app = Flask(__name__)
CORS(app, supports_credentials=True)
REQUEST_PASSWORD = "test123456"
def return_json(data=None, message="", success=True, status_code=200):
return jsonify({
"success": success,
"message": message,
"data": data
}), status_code
def error_catch_and_password_check(func):
def wrapper(*args, **kwargs):
try:
if request.headers.get('password') != REQUEST_PASSWORD:
return return_json(message="Unauthorized", success=False, status_code=403)
return func(*args, **kwargs)
except Exception as e:
# raise e
return return_json(message=f"Error: {repr(e)}", success=False, status_code=500)
wrapper.__name__ = func.__name__
return wrapper
@app.route('/ping', methods=['GET'])
@error_catch_and_password_check
def ping_request():
return return_json(message="pong", success=True, status_code=200)
@app.route("/performance_test_get_list", methods=["GET"])
@error_catch_and_password_check
def performance_test_get_list_request():
per_page = request.args.get("count", default=10000, type=int)
example_data_limit = request.args.get("example_data_limit", default=10, type=int)
idx = request.args.get("idx", default=-1, type=int)
grpc_result, rest_result = performance_test.test_get_main(per_page=per_page, list_data_limit=example_data_limit)
return return_json({
"idx": idx,
"request_count": per_page,
"grpc": grpc_result,
"rest": rest_result
})
@app.route("/performance_test_add_books", methods=["GET"])
@error_catch_and_password_check
def performance_test_add_books_request():
book_count = request.args.get("count", default=1000, type=int)
grpc_result, rest_result = performance_test.test_add_main(book_count=book_count)
idx = request.args.get("idx", default=-1, type=int)
return return_json({
"idx": idx,
"request_count": book_count,
"grpc": grpc_result,
"rest": rest_result
})
if __name__ == "__main__":
app.run("0.0.0.0", port=9520)