[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

"ping" not reconnecting in Python MySQLdb client interface

John Nagle

2/3/2008 8:37:00 AM

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:

Traceback (most recent call last):
File "rateapiv1.fcgi", line 60, in QuickSitetruthQuery
db.ping() # reattach connection if necessary
OperationalError: (2006, 'MySQL server has gone away')

The MySQL server is up, and new connection attempts succeed.

This problem was reported two years ago relative to TurboGears:

http://trac.turbogears.org/...

I suspect that MySQL has auto-reconnect turned off, but doesn't document this.

(MySQL 5 on Fedora Core)

John Nagle
1 Answer

John Nagle

2/3/2008 5:04:00 PM

0

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