#flask
#flask
Вопрос:
Я использую Flask REST API для своего приложения, и я заметил, что когда я отправляю запросы извне моей собственной сети, это иногда происходит очень, очень медленно. Большинство вызовов завершается в течение 150 мс, но некоторые занимают 8 секунд. Подключение к базе данных осуществляется к базе данных MySQL с использованием DBUtils.PersistentDB
Код для конечной точки:
@app.route("/name", methods=["POST"])
@jwt_refresh_token_required
def get_name_and_company():
user = get_jwt_identity()
response_object = server_functions.get_name_and_company(user)
return response_object
Функция, которую он использует:
def get_name_and_company(user):
sql = "SELECT fysios.firstname, fysios.lastname, companies.name FROM
fysios "
"INNER JOIN companies ON fysios.companyID = companies.id WHERE fysios.email = %s"
cursor = flask_server.get_db().cursor()
cursor.execute(sql, user)
data = cursor.fetchall()
first_name = data[0]['firstname']
last_name = data[0]['lastname']
company = data[0]['name']
response_object = name_and_company(first_name, last_name, company)
return make_response(jsonify(response_object)), 200
Вот временные метки на сервере Flask (это внутренний сервер разработки, но я запускаю его с threaded = True):
[08/Mar/2019 22:16:54] "OPTIONS /login HTTP/1.1" 200 -
[08/Mar/2019 22:16:55] "POST /login HTTP/1.1" 200 -
[08/Mar/2019 22:16:55] "OPTIONS /clients HTTP/1.1" 200 -
[08/Mar/2019 22:16:55] "OPTIONS /verifyLogin HTTP/1.1" 200 -
[08/Mar/2019 22:16:55] "POST /clients HTTP/1.1" 200 -
[08/Mar/2019 22:16:57] "POST /verifyLogin HTTP/1.1" 200 -
[08/Mar/2019 22:16:57] "OPTIONS /name HTTP/1.1" 200 -
[08/Mar/2019 22:16:58] "POST /clients HTTP/1.1" 200 -
[08/Mar/2019 22:17:05] "POST /name HTTP/1.1" 200 -
Как вы можете видеть, /name занимает в общей сложности 8 секунд, и я не могу выяснить, почему. Этот вызов /name — всего лишь пример, это может произойти при любом из вызовов. Есть ли способ узнать, где на самом деле застряло приложение Flask?
Ответ №1:
Развертывание в AWS Beanstalk решило проблему. Я не знаю, виноваты ли ограничения встроенного сервера разработки, но это то, что сделало это для меня.