Как обрабатывать соединения AWS-RDS в моем приложении?

#python #mysql #amazon-rds

#python #mysql #amazon-rds

Вопрос:

Я ищу информацию о том, как обрабатывать мое подключение к AWS-RDS. Должен ли я открывать и закрывать соединение каждый раз при выполнении запроса? Должен ли я использовать лямбда-функцию и почему?

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

 conn = pymysql.connect(db=dbname, host=host, port=port, user=user,
                       password=password)
cur = conn.cursor()
 

Затем я выполняю запросы по всему коду, подобные этому.

 cur.execute("SELECT product, amount, total "  
              "FROM "   table  
            " WHERE po_date BETWEEN %s AND %s",
            (cur_month, next_month))
 

Ответ №1:

Это зависит от настроек вашего приложения.

Глобальное соединение — если вы создаете соединение на глобальном уровне, вы экономите на стоимости открытия соединения каждый раз, когда вам нужно получить доступ к базе данных, но вы используете больше памяти в базе данных, поскольку она поддерживает открытое соединение. Если приложение не закрывает соединение при выходе, база данных должна вручную отключить это незанятое соединение и отключить его. Вам нужно будет добавить логику повторных попыток в базу данных, чтобы убедиться, что соединение все еще работает.

Подключайтесь каждый раз — дополнительные накладные расходы на создание и закрытие соединения. Для открытия и закрытия соединения используется дополнительный процессор на стороне клиента и базы данных, но количество подключений будет ниже.

Что касается использования lambda, это полностью зависит от дизайна приложения. Но я бы сказал, да, используйте его, когда сможете!

Если вы хотите использовать lambda для подключения к базе данных, вам нужно будет создать пакет развертывания или уровень lambda для включения клиента SQL. Вот несколько ссылок с пошаговыми инструкциями по их созданию для python с помощью pymysql. При необходимости вы можете заменить библиотеку pymysql другим SQL-клиентом, используя эти же инструкции.

https://geektopia.tech/post.php?blogpost=Create_Lambda_Package_Python

https://geektopia.tech/post.php?blogpost=Create_Lambda_Layer_Python

Комментарии:

1. Спасибо! Я нигде не смог найти никакой документации или сообщений по этой проблеме. Раньше я использовал sqlite, и было много информации о том, как каждый раз открывать / закрывать соединение.