AWS Lambda: значение переменной из одного выполнения сохраняется и используется при последующем запуске - PullRequest
3 голосов
/ 12 апреля 2019

У меня проблема с AWS лямбда-питоном.У меня есть переменная, определенная в лямбда-слое, и когда у нас есть несколько обращений к этому коду, значение переменной из одного выполнения сохраняется и используется для последующего запуска.

Есть ли способ заставить каждое лямбда-выполнение сброситьвсе переменные и не использовать значение переменной из предыдущего запуска.

1 Ответ

2 голосов
/ 12 апреля 2019

Я подозреваю, что это не имеет ничего общего с Lambda Layers и не имеет ничего общего с повторным использованием контейнера (функция производительности Lambda).Все, что объявлено вне вашей функции-обработчика, будет сохраняться при горячем перезапуске.

Подробнее см. Лямбда-контекст выполнения AWS .

Один из возможных способов проверки холодного / горячего запуска,и сбросить среду, выглядит следующим образом:

import json
import logging

cache = {}
cold_start = True

def handler(event, context):
    global cold_start

    if cold_start:
        print("Cold start")
        cold_start = False
    else:
        print("Warm start, reset cache")
        cache = {}

    # do work here
    cache['name'] = 'Jason'
    cache['age'] = 27
...