0

私は、iOS アプリケーションによって提供されるデータを使用して信号処理アルゴリズムを実行する Python で記述されたラムダ関数を持っています。

iOS アプリは関数を正常に呼び出しますが、しばらくするとタイムアウト エラーが発生します。

セッション タスクが次のエラーで失敗しました: エラー Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x282711350 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTaskError.<6>, _NSURLErrorKeyRelatedURLS( "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 秒間実行されます。

このエラーは、ラムダが呼び出される回数の約半分で発生します。

何か案は?

編集:

appDelegate でこれを行うリクエストの NSURLSession タイムアウトを増やしてみました。

let urlconfig = URLSessionConfiguration.default
urlconfig.timeoutIntervalForRequest = 300

しかし、それでもタイムアウトが発生し、ラムダ関数の最大実行時間は 70 秒だったので、実際には正しい timeoutIntervalForRequest を設定していないと考えています

4

0 に答える 0