当 MySQL 连接器由于互联网或 wifi 掉线而失去连接时,Python 脚本挂起

问题描述

我有一个在树莓派零 w+ 上运行的 python 脚本,它不断读取一些传感器并将数据记录到 MysqL 数据库中。数据库位于与 pi 分开的服务器中,可通过 Internet 访问。 每当互联网连接和/或 wifi 中断时,脚本就会挂起并且执行似乎仍在继续,但它会无限死,直到用 Ctrl+C 或 Ctrl+Z 停止。

我试过使用

try:
     cursor.execute(query)
     XXXX 
except:
     pass

避免在光标关闭或出现故障时脚本崩溃。 我也试过放一个

  try:
    if(conection.is_connected()):
         cursor.execute(query)
         XXXX 
  except:
         pass

但不是引发异常,脚本只是挂起并需要停止。

我也尝试过设置连接超时,结果相同。

有什么想法吗?

干杯 J

解决方法

解决了! 我将连接器从 mysql 连接器更改为 PyMySQL,它具有 read_timeout 和 write_timeout 作为连接参数,当连接丢失且超时已过时引发异常。我在官方 MySQL 连接器中找不到此功能。

干杯 J