Почему settimeout вызывает 502 в моей aws лямбде? - PullRequest
1 голос
/ 15 апреля 2020

Запуск на узле 10.x лямбда. Если я уберу обещание задержки, все мои вызовы будут работать как положено. Регистрация обратных вызовов выборки ничего не дает. Тайм-аут, похоже, просто останавливает лямбду. Я что-то пропустил? Возможно, как лямбды запускают nodeJS уникально?

Ниже приведена упрощенная версия моего кода.

import fetch from "node-fetch";

const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));

export const handler = async (): Promise<any> => {
    try {
        const publishedEvents = [
            'event 1',
            'event 2',
            'event 3'
        ]

        for (const publishEvent of publishedEvents) {
          await fetch('url', { method: 'POST', body: publishEvent });
          await delay(60000);
        }

        return {
            statusCode: 200,
            body: 'Published all Events'
        };
    } catch (e) {
        return {
            statusCode: 400,
            body: 'Failed Call'
        }
    }
};

1 Ответ

1 голос
/ 15 апреля 2020

На основе комментариев.

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

...