Ruby AWS客户端Lambda调用ReadTimeout

时间:2019-07-11 09:09:59

标签: ruby-on-rails ruby aws-lambda

My Rails应用程序使用AWS SDK v3如下调用lambda函数

        lambda_client = Aws::Lambda::Client.new(client_config)
        lambda_return_value = lambda_client.invoke(
        {
            function_name: function_name,
            invocation_type: 'RequestResponse',
            log_type: 'None',
            payload: generated_payload,
        }

我的大多数lambda函数都能成功执行,但是耗时超过60秒的函数即使在lambda完全执行的情况下,在红宝石方面也会导致以下异常

A Seahorse::Client::NetworkingError occurred in background at 2019-07-11 00:47:18 -0500 :
  Net::ReadTimeout

我已经阅读了文档,无法找到为我的lambda调用设置更长超时的方法。有什么想法让红宝石等待调用而不是超时吗?

1 个答案:

答案 0 :(得分:1)

嗨,Aws :: Lambda :: Client默认超时为60,但是您可以在创建新客户端时更改它。在client_config中设置:http_read_timeout

client_config = {
....
http_read_timeout: 100
}

then create new client

lambda_client = Aws::Lambda::Client.new(client_config)

有关更多参考:https://docs.aws.amazon.com/sdkforruby/api/Aws/Lambda/Client.html

我希望对您有帮助