Оказывается, мы не можем предполагать, что код будет работать.
Пример реализации:
var alreadyLogging bool
func RecordQuery(name MyEvent) {
if alreadyLogging {
return
}
alreadyLogging = true
for i := 0; ; i++ {
time.Sleep(time.Second)
log.Print("Still here ", i)
}
}
Поведение: пока контейнер, в котором работает лямбда, принимает запросы,горутин будет казнен.Но весь код будет остановлен, когда контейнер больше не будет получать запросы.
Возможный вывод (в облачном хранилище):
2018/05/16 08:50:46 Still here 70
2018/05/16 08:50:47 Still here 71
2018/05/16 08:50:48 Still here 72
2018/05/16 08:50:49 Still here 73
2018/05/16 08:51:36 Still here 74
2018/05/16 08:51:37 Still here 75
2018/05/16 08:51:38 Still here 76
Обратите внимание, что в модели программирования Node.js вы можете запрашивать AWSЛямбда, чтобы заморозить процесс вскоре после вызова обратного вызова, даже если в цикле событий есть события: Свойства объекта контекста .
Было бы интересно увидеть некоторые варианты использования для этогоAPI.
Обновление: в Node.js, как только вы подключитесь к базам данных, у вас будет непустая очередь событий.Вот почему этот параметр доступен.