使用concurrent.futures模块时python中的mysql问题

使用concurrent.futures模块时python中的mysql问题,python,Python,我正在使用concurrent.futures模块并行运行作业。它运行得很好 每当作业开始/结束时,mysql数据库中的开始时间和完成时间都会更新。此外,每个作业都从数据库获取其输入文件,并将输出文件保存在数据库中。我得到了错误 “错误2006:MySQL服务器已消失” 及 “错误2013:查询期间与MySQL服务器的连接丢失”运行脚本时 在运行单个作业时,我不会遇到这些错误 示例脚本: import concurrent.futures executor = concurrent.futur

我正在使用concurrent.futures模块并行运行作业。它运行得很好

每当作业开始/结束时,mysql数据库中的开始时间和完成时间都会更新。此外,每个作业都从数据库获取其输入文件,并将输出文件保存在数据库中。我得到了错误

“错误2006:MySQL服务器已消失”

“错误2013:查询期间与MySQL服务器的连接丢失”
运行脚本时

在运行单个作业时,我不会遇到这些错误

示例脚本:

import concurrent.futures

executor = concurrent.futures.ThreadPoolExecutor(max_workers=pool_size)

futures = []

for i in self.parent_job.child_jobs:
    futures.append(executor.submit(invokeRunCommand, i))

def invokeRunCommand(self)
    self.saveStartTime()
    self.getInputFiles()
    runShellCommand()
    self.saveEndTime()
    self.saveOutputFiles()
我使用一个数据库连接和游标来执行所有查询。有些查询非常耗时。不确定出现此错误的原因。有人能澄清一下吗


-谢谢

是的,到数据库的单个连接不是线程安全的,因此如果对多个线程使用同一个数据库连接,则会出现故障


如果您的伪代码具有代表性,那么只需启动并为
invokeRunCommand
中的每个线程使用单独的数据库连接,一切都会很好。

这不是Python。
{}
从哪里来?仍然不是Python
def
需要一个
。请让我知道我们是否需要为每个线程连接到数据库,或者只需要使用单个连接为每个线程创建一个游标ok@user2194611你需要一个完全独立的连接。你能看一下吗