Запрос начал долго получать данные по 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"не прошли авторизацию"

Ответы (0 шт):