在AWS Lambda中使用RDS时,有时会遇到“无法在已经排队的握手之后再次排队握手”的错误。这通常是由于在Lambda函数执行期间创建了多个数据库连接导致的。以下是解决该问题的一种方法:
import pymysql
# 全局变量
db_connection = None
def lambda_handler(event, context):
global db_connection
if db_connection is None:
db_connection = pymysql.connect(
host='your-db-host',
user='your-db-username',
password='your-db-password',
database='your-db-name'
)
# 在这里执行数据库操作
return {
'statusCode': 200,
'body': 'Success'
}
def lambda_handler(event, context):
global db_connection
if db_connection is None:
db_connection = pymysql.connect(
host='your-db-host',
user='your-db-username',
password='your-db-password',
database='your-db-name'
)
try:
# 在这里执行数据库操作
pass
finally:
# 关闭数据库连接
db_connection.close()
db_connection = None
return {
'statusCode': 200,
'body': 'Success'
}
通过使用全局变量和适当地关闭数据库连接,可以确保在Lambda函数执行期间只创建一个数据库连接,从而解决“无法在已经排队的握手之后再次排队握手”的错误。