使用concurrent.futures模块时python中的mysql问题
我正在使用concurrent.futures模块并行运行作业。它运行得很好 每当作业开始/结束时,mysql数据库中的开始时间和完成时间都会更新。此外,每个作业都从数据库获取其输入文件,并将输出文件保存在数据库中。我得到了错误 “错误2006:MySQL服务器已消失” 及使用concurrent.futures模块时python中的mysql问题,python,Python,我正在使用concurrent.futures模块并行运行作业。它运行得很好 每当作业开始/结束时,mysql数据库中的开始时间和完成时间都会更新。此外,每个作业都从数据库获取其输入文件,并将输出文件保存在数据库中。我得到了错误 “错误2006:MySQL服务器已消失” 及 “错误2013:查询期间与MySQL服务器的连接丢失”运行脚本时 在运行单个作业时,我不会遇到这些错误 示例脚本: import concurrent.futures executor = concurrent.futur
“错误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。{}
从哪里来?仍然不是Pythondef
需要一个:
。请让我知道我们是否需要为每个线程连接到数据库,或者只需要使用单个连接为每个线程创建一个游标ok@user2194611你需要一个完全独立的连接。你能看一下吗