我正在进行在线评判。我正在使用python 2.7和Mysql(因为我正在处理后端部分)
我的方法:
我创建了一个主线程,它从数据库中提取提交(一次10个)并将它们放入队列中。然后我有多个线程从队列中提取,评估它并将结果写回数据库。
现在我有些怀疑(我知道他们对不同主题有疑问,但对其中一些主题的处理也非常感激)。
Lost connection to Mysql server
。即使我停止程序并重新启动它,我仍然会得到它。我该怎么办呢?我还应该只为主线程实现一个连接池吗?答案 0 :(得分:3)
使用连接池。共享数据库连接并不总是坏事,但你必须要小心它。您可以尝试使用SQLAlchemy为您管理大量此操作:http://docs.sqlalchemy.org/en/rel_0_8/orm/session.html#unitofwork-contextual
服务器可能没有连接,您的连接可能已被杀死,因为它使用了太多资源..等等。连接池可以帮助您解决此问题。
这完全取决于它,它可以在理论上无限期地保持活力,但通常你会在某个地方暂停。
答案 1 :(得分:1)
如果为每个线程提供相同的连接,则线程将无法查询数据库,并且将发生争用条件。所以你需要为每个线程提供单独的连接,这确实是个好主意。使用连接池可以帮助您获得不同的连接。
连接池一定会有所帮助。
工作结束后释放连接。连接存在限制,称为连接超时。所以你需要使用一些第三方库来处理它,c3p0是一个很好的库,它可以帮助你。
请参考以下链接进行配置: