aws лямбда в mysql, написанный на python, не возвращает самые последние данные, пока я что-то не изменю и не сохраню код снова - PullRequest
0 голосов
/ 07 июня 2018

Я использую следующее для подключения своей AWS лямбды к БД:

https://www.isc.upenn.edu/accessing-mysql-databases-aws-python-lambda-function

вот код, который выполняет работу:

def lambda_handler(event, context):
"""
This function inserts content into mysql RDS instance
"""
item_count = 0

with conn.cursor() as cur:
    cur.execute("create table Employee3 (EmpID  int NOT NULL, Name varchar(255) NOT NULL, PRIMARY KEY (EmpID))")
    cur.execute('insert into Employee3 (EmpID, Name) values(1, "Joe")')
    cur.execute('insert into Employee3 (EmpID, Name) values(2, "Bob")')
    cur.execute('insert into Employee3 (EmpID, Name) values(3, "Mary")')
    conn.commit()
    cur.execute("select * from Employee3")
    for row in cur:
        item_count += 1
        logger.info(row)
return "Added %d items to RDS MySQL table" %(item_count)

ПроблемаКогда я пытаюсь использовать лямбду, я получаю результат обратно нормально, но если я изменяю данные в БД, а затем снова отправляю запрос, пока работает лямбда-контейнер, я не вижу обновленных данных и вижу старые данные.Но когда я сохраняю лямбду после изменения, чтобы убить текущий контейнер, он начинает загружать последнюю информацию.Как я могу это исправить?

1 Ответ

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

Прежде всего, дважды проверьте, что ваш ответ больше нигде не кэшируется (API Gateway, CloudFront или все, что вы используете для вызова этой лямбды).

Все переменные вне обработчика в AWS Lambdaобрабатываются как глобальные (по крайней мере, для отдельного экземпляра этого лямбда-контейнера).

Проблема заключается в чем-то, что вы создали вне обработчика.Проблема должна быть связана с соединением (ваша переменная conn).Переместите этот код в функцию-обработчик.

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