URL-адрес лямбда-вызова AWS, который занимает больше времени, чем предел выполнения лямбды - PullRequest
0 голосов
/ 20 сентября 2018

Контекст

Я хочу запустить 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, это похоже на то, что запрос отменяется.

Есть идеи, почему?


Вопрос

Как лямбда может вызвать URL, выполнение которого занимает много времени?Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Всем, кто читает это: я исправил свою проблему с помощью AWS Batch.

0 голосов
/ 20 сентября 2018

Вы должны увеличить время ожидания для своей функции.В зависимости от того, как вы определили свою функцию, вы можете увеличить время ожидания по умолчанию на 300 секунд на странице функций или в скрипте облачной информации.

Время ожидания, определенное внутри вашей функции, не влияет на лямбда-функции.AWS Lambda убьет вашу функцию через 300 секунд независимо от времени ожидания, определенного в вашем скрипте.Смотри: https://docs.aws.amazon.com/lambda/latest/dg/limits.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...