|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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/ticket/872 I suspect that MySQL has auto-reconnect turned off, but doesn't document this. (MySQL 5 on Fedora Core) John Nagle |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
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 |
|
![]() |
| Outils de la discussion | |
|
|