John Nagle
2/3/2008 5:04:00 PM
JJohn Nagle wrote:
> I have some long-running Python programs that can be idle
> for hours, and, of course, the MySQL connection times out.
> So I call
>
> db.ping()
>
> at the beginning of a new request cycle. This should
> reestablish the connection, but it doesn't.
....
> I suspect that MySQL has auto-reconnect turned off, but doesn't document
> this.
That seems to be the case. MySQLdb.connect turns off auto-reconnect, and
doesn't document "ping".
I'm currently trying this:
if db : # if previously attached
try :
db.ping() # test connection
except MySQLdb.OperationalError, message: # loss of connection
db = None # we lost database connection
if db is None : # if no valid database handle
db = MySQLdb.connect(...) # connect to database
which is a bit ugly.
John Nagle