Alexa отправила несколько запросов в AWS Lambda - PullRequest
0 голосов
/ 26 октября 2018

Я создаю навык Alexa, который отправляет запрос на мой веб-сервер, затем веб-сервер выполнит некоторую обработку и загрузит файл в Amazon S3.Во время процесса веб-сервера я продолжаю получать файл из Amazon S3 каждые 10 секунд, пока не получу файл.И ответ основан на содержимом файла.

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

На данный момент я использовал прогрессивный ответ с асинхронным ожиданием в своем коде, и навык продолжал ожидать файл на S3.Но я обнаружил, что навык автоматически отправит второй запрос в Lambda через 50 секунд.Это означает, что для одного и того же навыка я запустил две лямбда-функции одновременно.

И результат выполнения таков: после первого ответа, который поступил с прогрессивным ответом, через 50 секунд будет слышен другой ответ, также поступивший от прогрессивного ответа, который относится ко второму запросу.И ничего не произошло до конца.

Я знаю, что плохо, когда навык ждет так долго, но я все еще хочу выяснить способ выполнения, если навык должен ждать так долго.

ТамЕсть некоторые моменты, которые я хочу выяснить.

  1. Есть ли какой-либо способ предотвратить умение отправлять вторые запросы в Lambda?
  2. Есть ли другой способ, которым я могу попытаться достичь цели?

Спасибо

1 Ответ

0 голосов
/ 29 октября 2018

В конце концов, я обнаружил, что второй вызов Lambda не из Alexa, а из самой AWS Lambda.Обратитесь к следующей статье

https://cloudonaut.io/your-lambda-function-might-execute-twice-deal-with-it/

Так что вам приходится иметь дело с такой ситуацией в вашем лямбда-коде.Можно использовать одну вещь, это то, что эти два запроса идентификатора запроса одинаковы.Таким образом, вы можете определить, выполняется ли это в первый раз, проверив в хранилище тот же идентификатор запроса, который вы сохраняете при первом выполнении.

Кроме того, я также обнаружил, что однажды Alexa Skill ожидает более 1Через несколько минут произойдет сбой и произнесет сообщение об ошибке (тест Amazon Echo).И в журнале AWS Lambda нет ничего другого, отличного от журнала обычного исполнения.Это означает, что журнал, кажется, в порядке, но на самом деле результат выполнения не так.

...