【问题标题】:Python mysql.connector timeoutPython mysql.connector 超时
【发布时间】:2014-06-20 12:35:24
【问题描述】:

这是一个使用 mysql.connector 模块与 MySQL 数据库的简单连接。

db = mysql.connector.connect(
    host=DB_SERVER,
    port=DB_PORT,
    user=DB_UNAME,
    passwd=DB_PASSWORD,
    db=DB_NAME)
db.connect()
mysqlCursor.execute(query)

我想控制两个不同的超时。首先,我希望它在 .connect() 函数上花费的时间不超过 5 秒。我已经弄清楚了。 其次,我希望它在 .execute() 函数上花费的时间不超过一秒钟。我该怎么做?

我是数据库管理员,因此如果需要,我可以为此做一些事情。不过,我宁愿只为一个特定的 MySQL 用户更改超时,而不是为每个人更改超时,这就是我从 Python 端开始的原因。

这是我目前发现的:

mysql.connecter 的documentation 列出了几个超时参数。 Connect-timeout 将为初始连接设置超时,但据我所知,它不会设置查询超时。如果没有活动,interactive-timeout 会导致它超时,但我认为这并不意味着如果查询执行时间过长,它就会超时。

连接超时=秒 以秒为单位的连接超时。在 Linux 上,此超时也用于等待来自服务器的第一个答复。 (timeout 已经被 connect-timeout 取代,但 MySQL 5.0 中仍然支持 timeout 以实现向后兼容性。)

交互式超时=秒 在关闭连接之前允许几秒钟的不活动。客户端的会话 wait_timeout 变量设置为会话 interactive_timeout 变量的值。

【问题讨论】:

    标签: python mysql


    【解决方案1】:

    从 MySQL 5.7.8 开始,可以为每个会话设置 maximum execution time for just SELECT statements。连接后立即设置:

    db = mysql.connector.connect(...)
    cursor = db.cursor()
    # Limit SELECTs to 1 second
    cursor.execute("SET SESSION MAX_EXECUTION_TIME=1000")
    

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2021-08-07
      • 2020-06-28
      • 2019-01-13
      • 2019-05-01
      相关资源
      最近更新 更多