Twisted, MySQLdb и (2006, «сервер MySQL ушел») с использованием Twisted adbapi - PullRequest
2 голосов
/ 05 октября 2011

В витой я постоянный цикл событий, который всегда ищет новый запрос для запуска. Он опрашивает очередь SQS, и это время, когда время между очередями достаточно велико, чтобы истечь, и это ошибка, которую я получаю, когда новая запрос приходит ...

MySQLdb _mysql_exceptions.OperationalError: (2006, 'сервер MySQL имеет ушел ")

вот мое соединение

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, попробуйте переподключиться и снова выполнить запрос. Как лучше всего решить эту проблему?

Спасибо

1 Ответ

2 голосов
/ 06 октября 2011

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

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

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