2011-10-05 2 views
1

В twisted Я являюсь вечным циклом событий, который всегда ищет новый запрос для запуска. Он проверяет очередь SQS и времена, когда время между queres достаточно долго, чтобы тайм-аут, и это ошибка я получаю, когда приходит новый запрос ...Twisted, MySQLdb и (2006, «сервер MySQL ушел») с помощью Twisted adbapi

MySQLdb _mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')

здесь мое соединение

self.pool = adbapi.ConnectionPool("MySQLdb", self.parms['host'], self.parms['username'], self.parms['password'], self.parms['database']) 

Вот логика я использую, чтобы попытаться решать проблему.

try: 
    d = self.pool.runQuery(query,()) 
except: 
    self.pool = adbapi.ConnectionPool("MySQLdb", self.parms['host'], self.parms['username'], self.parms['password'], self.parms['database']) 
    d = self.pool.runQuery(query,()) 
    print 'Reconnecting' 

Проблема в том, что она не работает очень хорошо. Поэтому, если вы получите ошибку 206, попробуйте повторно подключиться и снова выполните запрос. Какова наилучшая практика для решения этой проблемы?

Благодаря

ответ

2

У меня нет опыта работы с adbapi, но cp_reconnect параметр, упомянутый в docs, выглядит многообещающим.

Таким образом, ваш инициализации пул будет выглядеть примерно так:

self.pool = adbapi.ConnectionPool("MySQLdb", self.parms['host'], self.parms['username'], self.parms['password'], self.parms['database'], cp_reconnect=True) 
+0

Thanks..I проверит его. –

+0

Yup ... это сработало! благодаря –