Python MySQL-Connector 需要一分多钟才能打开连接

标签 python mysql aws-lambda mysql-python

Python 的 MySQL-Connector 打开与数据库的连接需要超过 1 分钟。

我正在编写一个 AWS Lambda 函数,以便简单地从 AWS Secret Manager 中提取当前 key ,然后使用该 key 打开与 SQL 数据库的连接并运行查询以获取一些测试数据。

secret = {
        'user': (responseDict['User ID']),
        'password': (responseDict['Password']),
        'host': (responseDict['Data Source']),
        'database': (responseDict['Initial Catalog']),
        'raise_on_warnings': True
}

def connect_database(secret):
    # Creates a client connection to the database, using the secret 
    log.info('Attempting to connect')
    try:
        dbClient = mysql.connector.connect(**secret)

    except mysql.connector.Error as err:
        if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
            logger.error('ERROR: Failed to auth with the SQL Database.')
        elif err.errno == errorcode.ER_BAD_DB_ERROR:
            logger.error('ERROR: Database does not exist.')
        else:
            logger.error('ERROR: Unkown error when connecting to database')
            logger.error(err)

    logging.info('Connected succesfully')
    return dbClient

当我第一次运行 lambda 函数时,由于达到了 3 秒的超时阈值而失败,因此我将超时增加到 60 秒,并在脚本的各个点放置了一些信息日志以查找它计时的点出去。令我惊讶的是,在 60 秒的阈值下,它仍然超时。

显示的最后一个日志是在尝试打开与 SQL Server 的连接之前的“log.info('Attempting to connect')”。 “连接成功”不会记录,也不会捕获任何错误。

任何人都可以澄清连接是否应该花费这么长时间或更可能的选择,指出我哪里出错了?

编辑:这最终与我不知道的网络问题有关,谢谢!

最佳答案

AWS Lambda 函数本身需要一些时间来准备和执行,即使 lambda 处于热备用模式。设置超时时请考虑这一事实。尝试增加超时时间,可以将超时时间增加为300秒并尝试。

关于Python MySQL-Connector 需要一分多钟才能打开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026435/

相关文章:

Java SQL 插入多个变量

amazon-web-services - 在已创建的资源上部署 lambda 函数

Python - 使用utf-8编码读写csv文件

python - 如何更自然地获取更新列表而不使用标志

python - Deep Q Network 无法解决 OpenAI CartPole

java - MyEclipse Enterprise Workbench 10 确实非常非常慢

python - 如何根据条件用 NaN 替换数据框列值?

php - MySQL 数据库的独特 "Value"问题

azure - 比较 AWS-lambda、Azure 函数和 Google Cloud Function

node.js - 如何访问 AWS Lambda 中的 header ?