68 lines
2.1 KiB
Python
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)
|