Запрос начал долго получать данные по api, раньше за несколько минут, сейчас около 40 минут
Есть api,с какого то времени запросы начали приходить очень долго, в postman больше получаса. Нужно выяснить из-за чего так, какие могут причины? api написано на python. Запрос без параметров даты выполняется нормально, как то добавляются параметры, то запрос таймаут или очень долго работает.
@logger.catch(reraise=True)
@app.route('/getPurchaseByPeriod/<string:token_authorization>/')
def getPurchaseByPeriod(token_authorization):
logger.debug(token_authorization)
if config.Token_auth == token_authorization:
try:
server = ''
database = ''
username = ''
password = ''
# date = datetime.strptime("2023-03-01 18:58:01",'%Y-%m-%d %H:%M:%S')
cnxnn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE=' +
database+';ENCRYPT=no;UID='+username+';PWD=' + password)
cursor = cnxnn.cursor()
date_from = datetime.now().date() - timedelta(days=1)
date_from = date_from.strftime('%Y-%d-%m')
date_to = datetime.now().date() + timedelta(days=1)
date_to = date_to.strftime('%Y-%d-%m')
request_query = request.args
if request_query.get('date_from'):
date_from = request_query.get('date_from')
date_from = datetime.strptime(date_from, '%Y-%d-%m')
if request_query.get('date_to'):
date_to = request_query.get('date_to')
date_to = datetime.strptime(date_to, '%Y-%d-%m')
date_to = date_to + timedelta(days=1)
logger.debug(f"date_from {date_from}")
logger.debug(f"date_to {date_to}")
all_info = cursor.execute(
"""SELECT
cust.ID,
cust.MobileNumber,
cust.FullName,
pur.ID,
pur.CheckNumber,
pur.PurchaseDate,
pur.CheckSummary,
pp.Price,
pp.Quantity,
pp.Summ,
good.ID,
good.Name,
pur.PurchaseDate
FROM Purchases as pur
LEFT JOIN PurchasePositions as pp
ON pp.PurchaseID = pur.id
LEFT JOIN Goods as good
ON good.ID = pp.GoodID
LEFT JOIN Cards as ca
ON ca.id = pur.ownersystemuser_id
LEFT JOIN customers as cust
ON cust.ID = ca.ownercustomer_id
WHERE pur.PurchaseDate BETWEEN ? AND ? AND cust.MobileNumber IS NOT NULL
ORDER BY pur.ID
""", (date_from, date_to)).fetchall()
result = []
last_p_key = None
last_item = None
for item in all_info:
if item[3] != last_p_key:
last_p_key = item[3]
last_item = {
"checknumber": int(item[4]),
"phone": str(item[1]),
"date": str(item[12]),
'sale': [{
"good_id": str(item[10]),
"good_name": str(item[11]),
"quantity": float(item[8]),
"cost": float(item[7]),
"sum": float(item[9])
}]
}
logger.debug(f"new_item {last_item}")
result.append(last_item)
else:
last_item["sale"].append({
"good_id": str(item[10]),
"good_name": str(item[11]),
"quantity": float(item[8]),
"cost": float(item[7]),
"sum": float(item[9])
})
logger.debug(f"Транзакции обработаны")
return result
except Exception as e:
logger.opt(exception=e).error(
"Ошибка")
return {'Error': str(e)}
else:
return f"не прошли авторизацию"