我有一个用python编写的lambda函数,该函数使用iOS应用程序提供的数据运行信号处理算法。
iOS应用成功调用了该函数,但过一会儿出现超时错误:
会话任务失败,并出现错误:Error Domain = NSURLErrorDomain 代码= -1001“请求超时。” UserInfo = {_ kCFStreamErrorCodeKey = -2102,NSUnderlyingError = 0x282711350 {Error Domain = kCFErrorDomainCFNetwork代码= -1001“(空)” UserInfo = {_ kCFStreamErrorCodeKey = -2102,_kCFStreamErrorDomainKey = 4}}, _NSURLErrorFailingURLSessionTaskErrorKey = LocalDataTask。<6>, _NSURLErrorRelatedURLSessionTaskErrorKey =( “” LocalDataTask。<6>“),NSLocalizedDescription =请求超时。 NSErrorFailingURLStringKey = https://mylambdaURL/invocations, NSErrorFailingURLKey = https://mylambdaURL/invocations, _kCFStreamErrorDomainKey = 4}
我这样调用函数:
lambdaInvoker.invokeFunction("myLambdaName", jsonObject: jsonObject)
.continueWith(block: {(task:AWSTask<AnyObject>) -> Any? in
if( task.error != nil) {
print("Error: \(task.error!)")
lambdaLogs.errors += 1
return nil
}
if let JSONDictionary = task.result as? NSDictionary {
lambdaLogs.responses += 1
}
return nil
})
但是,Lambda函数的日志没有显示任何错误,该函数成功运行,甚至可以毫无问题地写入dynamoDB表中。因此Lambda不会超时,但是该功能运行约60秒钟。
此错误发生的时间大约是lambda调用的一半。
有什么想法吗?
编辑:
我尝试在appDelegate中为请求增加NSURLSession超时:
let urlconfig = URLSessionConfiguration.default
urlconfig.timeoutIntervalForRequest = 300
但是我仍然得到超时,lambda函数的最大运行时间是70秒,所以我想我并没有真正设置正确的timeoutIntervalForRequest