我有一个用 python 编写的 lambda 函数,它使用 iOS 应用程序提供的数据运行信号处理算法。
iOS 应用程序成功调用该函数,但一段时间后出现超时错误:
会话任务失败并出现错误:错误域=NSURLErrorDomain 代码=-1001“请求超时。” UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x282711350 {错误域=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask .<6>, _NSURLErrorRelatedURLSessionTaskError=( "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