Некоторое время запрос API занимает больше времени, чем обычно - PullRequest
0 голосов
/ 25 января 2019

У меня есть API, размещенные на AWS, и я написал ниже код в моем приложении для iOS, чтобы запрашивать данные с использованием этих API. Теперь какое-то время требуется 7-10 секунд, чтобы получить ответ, а иногда - 1-2 секунды.

 let request = NSMutableURLRequest(url: url,
                                              cachePolicy: .useProtocolCachePolicy,
                                              timeoutInterval: 30)
            request.httpMethod = methodName
            request.allHTTPHeaderFields = (isAuthHeaderRequired ? headers as? [String : String] : nil)

            if let dictParam = parameters, JSONSerialization.isValidJSONObject(dictParam) {
                let postData: Data? = try? JSONSerialization.data(withJSONObject: dictParam, options: [])
                let strParam = String(data: postData ?? Data(), encoding: .utf8)

                request.httpBody = postData
            }
            else {
                print("Parameters : No Input Parameters")
            }

            let session = URLSession.shared
            dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in

               // Handle response and proceed further 

            })

    dataTask.resume()

Я также подтвердил, что не существует проблемы истечения срока действия токена.

Я хочу выяснить, есть ли что-то не так с установкой AWS, которая приводит к этой проблеме задержки только в некоторых случаях или что-то требуется со стороны приложения.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Здесь много информации отсутствует, и я думаю, что могу дать только общий ответ.

Я вижу, что вы пометили этот вопрос "aws-lambda". Если вы используете лямбда-выражения для поддержки своих API-интерфейсов, я предлагаю вам ознакомиться с холодными запусками.

Чтобы подвести итог, ваш работающий экземпляр лямбды будет прерываться время от времени, и это иногда будет приводить к тому, что ваш "первый" запрос инициирует новый запуск вашей лямбды. Чтобы проверить это, вы можете взглянуть на журналы Cloudwatch.

0 голосов
/ 25 января 2019

Вы пытались использовать другой API, чтобы убедиться, что они возвращаются в одно и то же время? Вы можете использовать json-gen , чтобы создать простой ответ API, который вы можете вызвать из своего приложения, чтобы проверить, сколько времени это займет.

Также вы упомянули, что используете AWS, если вы используете лямбду, то имеет смысл, что для получения ответа требуется разное время, вот как работает лямбда, потому что он не требует сервера, поэтому ему нужно будет "раскрутить" вверх "за первый ответ.

...