AWS Lambda调用网址所花费的时间超过Lambda执行限制

时间:2018-09-20 10:51:25

标签: python python-3.x amazon-web-services aws-lambda

上下文

我想运行一个AWS Lambda,调用一个端点(开火然后忘记),然后停止Lambda-始终让端点自己开心地旋转。


尝试

1。

使用超时,例如

try:
    requests.get(url, timeout=0.001)

except requests.exceptions.ReadTimeout:
    ...

2。

在grequest中使用异步调用:

import grequests
...

def handler(event, context):

    try:
        ...

        req = grequests.get(url)
        grequests.send(req, grequests.Pool(1))

        return {
            'statusCode': 200,
            'body': "Lambda done"
        }

    except Exception:
        logger.exception('Error while running lambda')
        raise

这些请求似乎未到达API,几乎就像是该请求已被取消。

有什么想法吗?


问题

Lambda如何调用需要很长时间才能完成的URL?谢谢。

2 个答案:

答案 0 :(得分:0)

您必须增加功能的超时时间。根据您对函数的定义方式,可以在函数页面或cloudformation脚本内部将默认超时增加300秒。

函数内部定义的超时对lambda功能没有影响。无论脚本中定义了什么超时,AWS Lambda都会在300秒后终止您的功能。参见:https://docs.aws.amazon.com/lambda/latest/dg/limits.html

答案 1 :(得分:0)

对于阅读本文的任何人:我使用AWS Batch解决了问题。