一段时间的API请求需要比平时更多的时间

时间:2019-01-25 09:57:54

标签: ios swift amazon-web-services amazon-ec2 aws-lambda

我在AWS上托管了API,并且我在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 :(得分:1)

这里缺少很多信息,我想我只能提供一个一般性的答案。

我看到您已经用“ aws-lambda”标记了这个问题。如果您使用Lambda支持API,建议您仔细阅读冷启动。

总而言之,您正在运行的lambda实例将每隔一段时间终止一次,这有时会导致您的“第一个”请求启动lambda的全新启动。为了验证这一点,您可以查看Cloudwatch日志。

答案 1 :(得分:0)

您是否尝试过使用其他API来检查它们是否同时返回?您可以使用json-gen创建一个简单的API响应,您可以从您的应用中调用该API响应以检查所需的时间。

您还提到过您正在使用AWS,如果您使用的是lambda,则有意义的是,响应通过的时间不同,这就是lambda的工作方式,因为它是无服务器的,它需要“旋转” ”作为第一个响应。