асинхронные подключения с помощью AWS Lambda - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь использовать асинхронные хуки в функции Lambda с помощью пакета async-local-storage.Мой код все работает локально, согласно моим тестам, но не работает в Lambda.В частности, он не работает внутри функции обработчика, но работает в функциях, которые вызывает обработчик.

// index.ts (lots of code elided)

const als = require('async-local-storage');
als.enable();

exports.handler = async (event: APIGatewayEvent, context: APIGatewayEventRequestContext) => {
    try {
        als.set('blah1', '123');
        const blah1 = als.get('blah1');
        console.log(`blah1 ${blah1}`);

        doStuff();
    } catch (err) { ... }
}

Вывод консоли выше blah1 null.Интересно, что результат вызова set здесь равен false, что указывает на то, что асинхронный обратный вызов init не был вызван (потому что этот вызов устанавливает значение в используемой мной библиотеке).

// in a different file

const als = require('async-local-storage');
als.enable();

export function doStuff() {
    als.set('blah2', '123');
    const blah2 = als.get('blah2');
    console.log(`blah2 ${blah2}`);
}

Вывод консоли выше ожидаемого: blah2 123.Здесь есть идентификатор выполнения, и вызов set возвращает true.

Может кто-нибудь заметить, почему функция set не работает в функции-обработчике, и предложить способ заставить ее работать?Заранее спасибо.

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