【问题标题】:Python mysql connection timeout AFTER connection has been made with RDS via lambda通过 lambda 与 RDS 建立连接后 Python mysql 连接超时
【发布时间】:2021-02-28 13:15:15
【问题描述】:

我正在尝试设置一个连接到两个 RDS 实例的 lambda。函数代码是用 Python 编写的,它使用 mysql 连接器连接到数据库。这部分工作正常。但是,当我尝试从数据库中选择某些内容时,第一次调用有效,之后 lambda 超时。

Lambda 错误:Task timed out after 5.01 seconds

RDS 日志:[Note] Aborted connection XXXXX to db: 'X' user: 'X' host: 'XXXXX.compute.amazonaws.com' (Got an error writing communication packets)

我创建一个这样的连接:

cnx = mysql.connector.connect(user = os.environ['USER'],
                                          password = os.environ['PASSWORD'],
                                          host = os.environ['IP'],
                                          port = os.environ['PORT'],
                                          database = os.environ['NAME'])
return cnx

此连接将在整个代码中使用。

【问题讨论】:

  • Lambda 和 RDS 日志对会话有什么影响?
  • Lambda 日志仅声明超时,RDS 记录此[Note] Aborted connection XXXXX to db: 'X' user: 'X' host: 'XXXXX.compute.amazonaws.com' (Got an error writing communication packets)
  • 请将此文本添加到问题中。在我看来,这就像一个一次性的网络问题。你能重现它吗?
  • 在 lambda 的函数代码中每次都会发生这种情况。
  • 是什么让您认为 Lambda 函数在执行数据库操作时超时?该功能是否与数据库以外的任何其他服务交互?

标签: python amazon-web-services aws-lambda amazon-rds mysql-connector


【解决方案1】:

您的任务超时可能设置为 5 秒。

任务超时是因为完成时间太长,而不是因为与 DB 的任何通信问题。

增加超时设置或使函数运行得更快。

【讨论】:

  • 函数只是一个简单的SELECT,应该不会花太多时间。然而,将超时设置为 5 分钟并没有解决问题。
  • @sems 您现在收到 300 秒超时消息吗?
  • 是的,lambda 给出了 300 秒的超时,RDS 错误是一样的。
  • @sems 您是否尝试过在不使用 Lambda 的情况下运行它以查看需要多长时间?
  • 问题在于查询花费的时间超过了 lambda 超时时间。
猜你喜欢
  • 2017-07-25
  • 2021-03-01
  • 2017-10-05
  • 2016-11-25
  • 2020-03-14
  • 2017-04-10
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
相关资源
最近更新 更多