Python 当程序被SIGKILL终止时,如何关闭所有活动的mysql/mariadb连接?

Python 当程序被SIGKILL终止时,如何关闭所有活动的mysql/mariadb连接?,python,mysql,multithreading,mariadb,Python,Mysql,Multithreading,Mariadb,我将MariaDB与python一起使用。我有一个由PyQt5构建的带有GUI的小应用程序,我需要它与MariaDB进行通信。我确实使用一个单独的IO线程来建立连接和查询我的数据库。然而,由于我的程序中可能有bug,有时应用程序会冻结,我必须从任务管理器中删除它(我使用的是Windows,但我认为这与Linux中的SIGKILL相同)。然后我检查了我的远程数据库,发现我建立的连接仍然存在 是否有任何方法可以保证即使程序被SIGKILL终止,我也可以关闭所有连接?始终放置关键代码,这可能会在try

我将MariaDB与python一起使用。我有一个由PyQt5构建的带有GUI的小应用程序,我需要它与MariaDB进行通信。我确实使用一个单独的IO线程来建立连接和查询我的数据库。然而,由于我的程序中可能有bug,有时应用程序会冻结,我必须从任务管理器中删除它(我使用的是Windows,但我认为这与Linux中的SIGKILL相同)。然后我检查了我的远程数据库,发现我建立的连接仍然存在


是否有任何方法可以保证即使程序被SIGKILL终止,我也可以关闭所有连接?

始终放置关键代码,这可能会在try except finally中引发异常

try:
     do something that can produce an error
 except:
     print("error connct")
 else:
     print("result is", result)
 finally:
     print("do something that will always be run)

简短的回答是否

根据报告:


无法捕获、阻止或忽略信号SIGKILL和SIGSTOP。

在这种情况下,我是否依靠服务器端自动关闭超时连接?您可以将interactive\u timeout或wait\u timeout服务器变量设置为较低的值-但最好是修复应用程序,使其不会冻结。