Как повторно инициализировать соединение MySQL в Python AWS лямбда - PullRequest
0 голосов
/ 22 ноября 2018

Я - разработчик .NET, и вроде как новичок в python и aws lambda.

У меня есть лямбда, написанная на python, которая подключается к базе данных mysql.Мне посоветовали поместить соединение за пределы области действия обработчика, чтобы оно действовало как своего рода пул соединений, избегая чрезмерных открытых соединений при увеличении числа лямбд.Это работает, но если это соединение разорвано (по какой-либо причине), лямбды не работают, потому что они не проверяют, закрыто ли соединение, и повторно открывают соединение.Я попытался написать что-то вроде класса-обертки-одиночки вокруг него, но это не сработало, и я не могу переопределить значение переменной в области действия обработчика.Есть ли способ сделать то, что я хочу?Ниже приведена основная схема моей лямбда-функции (да, я знаю, что sql не совсем подходит для этого метода).


import pymysql

connection = pymysql.connect(MYSQL_ENDPOINT, user=MYSQL_USERNAME, passwd=MYSQL_PASSWORD, db=MYSQL_DBNAME, connect_timeout=5)

def lambda_handler(event, context):
  def do_stuff():
    with con.cursor() as cur:
      cur.execute("SELECT * FROM table;")
      con.commit()

...