Ho un'app Django in esecuzione su Google App Engine. Di tanto in tanto il DB solleva OperationalError
che è normale, tuttavia il mio codice, sebbene l'utilizzo di try..except, non stia rilevando l'eccezione (ho bisogno di questo per i tentativi).Impossibile catturare MySQLdb.OperationalError su App Engine
Ecco il mio codice:
from MySQLdb import OperationalError, DatabaseError
DB_RETRY_EXCEPTIONS = (
OperationalError,
DatabaseError,
)
class MyClassView(rest_framework.views.APIView):
@retry(DB_RETRY_EXCEPTIONS, tries=5, delay=5, logger=logger)
def dispatch(self, *args, **kwargs):
try:
return super(MyClassView, self).dispatch(*args, **kwargs)
except DB_RETRY_EXCEPTIONS as exp:
logger.warning("Got %s", exp)
raise
Nel stack eccezione, posso vedere che il flusso sta attraversando questo pezzo di codice, ma nessun avviso.
Ecco le ultime righe del stack trace:
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/MySQLdb-1.2.4b4/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/MySQLdb-1.2.4b4/MySQLdb/connections.py", line 190, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")
Ogni aiuto è apprezzato.