इस बारे में बात हुई थी, और यह दस्तावेज़ समस्या का बहुत अच्छी तरह से वर्णन करता है, इसलिए मैंने ऐसी त्रुटियों को संभालने के लिए उनके अनुशंसित दृष्टिकोण का उपयोग किया:http://disCorpe.us/jek/talks/SQLAlchemy-EuroPython2010.pdf
यह कुछ इस तरह दिखता है:
from sqlalchemy import create_engine, event
from sqlalchemy.exc import DisconnectionError
def checkout_listener(dbapi_con, con_record, con_proxy):
try:
try:
dbapi_con.ping(False)
except TypeError:
dbapi_con.ping()
except dbapi_con.OperationalError as exc:
if exc.args[0] in (2006, 2013, 2014, 2045, 2055):
raise DisconnectionError()
else:
raise
db_engine = create_engine(DATABASE_CONNECTION_INFO,
pool_size=100,
pool_recycle=3600)
event.listen(db_engine, 'checkout', checkout_listener)