Alexa AWS Ошибка: задание истекло через 3,00 секунды - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь написать навык Alexa, который использует request.js & cheerio.js, чтобы сделать некоторую очистку данных в Интернете.

Когда я запускаю его локально, он работает нормально, как и ожидалось, но на лямбда-экземпляре AWS я получаю сообщение об ошибке тайм-аута, поскольку для завершения работы требуется больше 3 секунд.Журнал ошибок таков:

    START RequestId: 57f84024-6ef5-11e8-b49f-37c904d87c93 Version: $LATEST
2018-06-13T10:34:26.850Z    57f84024-6ef5-11e8-b49f-37c904d87c93    NEW SESSION
2018-06-13T10:34:26.851Z    57f84024-6ef5-11e8-b49f-37c904d87c93    INTENT REQUEST
2018-06-13T10:34:26.851Z    57f84024-6ef5-11e8-b49f-37c904d87c93    Sid started
2018-06-13T10:34:26.851Z    57f84024-6ef5-11e8-b49f-37c904d87c93    INTENT FOR SID HAS STARTED
2018-06-13T10:34:26.851Z    57f84024-6ef5-11e8-b49f-37c904d87c93    https://en.wikipedia.org/wiki/Chloroform
2018-06-13T10:34:26.950Z    57f84024-6ef5-11e8-b49f-37c904d87c93    SESSION END REQUEST
2018-06-13T10:34:27.731Z    57f84024-6ef5-11e8-b49f-37c904d87c93    REQUEST MADE
2018-06-13T10:34:27.731Z    57f84024-6ef5-11e8-b49f-37c904d87c93    trying to use cheerio to load page now
END RequestId: 57f84024-6ef5-11e8-b49f-37c904d87c93
REPORT RequestId: 57f84024-6ef5-11e8-b49f-37c904d87c93  Duration: 3003.16 ms    Billed Duration: 3000 ms    Memory Size: 128 MB Max Memory Used: 48 MB  
2018-06-13T10:34:29.499Z 57f84024-6ef5-11e8-b49f-37c904d87c93 Task timed out after 3.00 seconds

Фрагмент кода, вызывающего проблему:

var URL = 'https://en.wikipedia.org/wiki/' + searchTerm;
                            console.log(URL)
                            request(URL, function(error, response, html){
                                console.log('REQUEST MADE');
                                try {
                                    console.log( 'trying to use cheerio to load page now')
                                    if (html){
                                    var $ = cheerio.load(html);
                                        console.log('PAGE LOADED');
                                        var infobox = $('table.infobox').children('tbody');
                                        infobox.children().each(function(i, element){
                                            var row = $(this);
                                            if(row.children().first().children().first().text() == 'GHS hazard statements') {
                                                var hCodes = row.first().first().text().toString();
                                                var pPhrases = row.first().next().text().toString();
                                                context.succeed(
                                                    generateResponse(
                                                        buildSpeechletResponse(`I found the following ` + hCodes + ` ` + pPhrases, true),
                                                        {}
                                                        ))
                                            }
                                        })

                                } else {
                                    console.log('There was no HTML loaded. Please try again')
                                } 
                                } catch(error){
                                    console.log(error)
                                    console.log('THERE WAS AN ERROR PLEASE TRY AGAIN')
                                }

                            })

Также я попытался использовать response.on (), но получаю ошибку "Не могу сделать .on "из неопределенного.

У кого-нибудь было что-нибудь подобное раньше?

Ответы [ 2 ]

0 голосов
/ 12 августа 2019

Ах, только что нашел его на основе ответа.Думаю, я бы добавил изображение.

Screenshot of AWS Lambda timeout screen

0 голосов
/ 13 июня 2018

Устранена проблема:

Установите для параметра тайм-аута более высокое значение на экране настройки лямбды.Что-то вроде хакерства, и вам нужно убедиться, что вы хорошо обрабатываете ошибки.Но теперь это работает ??

Надеюсь, что это может помочь другим.?

...