RT 当时我没明白,但是当我翻到这篇文章的时候,就明白了:地址
要理解这个问题产生的原因,我们就需要理解mysql以及多进程的原理。
索性我们现在不需要理解这个原理,只需要知道,多进程中,mysql会被进程关闭,然后后来的进程就没法用了,就是酱紫。
那么我们该怎么解决呢?
很简单,sqlalchemy官网已经给出解决方案了。传送门
翻到这行里面,参照他下面的代码,在engine的下面复制黏贴,多进程的问题就迎刃而解。代码如下,一定要添加在创建了engine之后
from sqlalchemy import event from sqlalchemy import exc import os engine = create_engine(".....") ## 这里新建engine只是伪代码,请使用正确的代码来创建engine @event.listens_for(engine, "connect") def connect(dbapi_connection, connection_record): connection_record.info['pid'] = os.getpid() @event.listens_for(engine, "checkout") def checkout(dbapi_connection, connection_record, connection_proxy): pid = os.getpid() if connection_record.info['pid'] != pid: connection_record.connection = connection_proxy.connection = None raise exc.DisconnectionError( "Connection record belongs to pid %s, " "attempting to check out in pid %s" % (connection_record.info['pid'], pid) )
未经允许不得转载:RffanLAB|Rffan实验室 » [Python]SQLAlchemy多进程出现mysql has gone away的问题