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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to