Вопрос

Я отладку «сервер MySQL ушел» ошибки.Существует предлагаемое решение, которое больше или меньше работает:

from twisted.enterprise import adbapi
from twisted.python import log
import MySQLdb

class ReconnectingConnectionPool(adbapi.ConnectionPool):
    """Reconnecting adbapi connection pool for MySQL.

    This class improves on the solution posted at
    http://www.gelens.org/2008/09/12/reinitializing-twisted-connectionpool/
    by checking exceptions by error code and only disconnecting the current
    connection instead of all of them.

    Also see:
    http://twistedmatrix.com/pipermail/twisted-python/2009-July/020007.html

    """
    def _runInteraction(self, interaction, *args, **kw):
        try:
            return adbapi.ConnectionPool._runInteraction(self, interaction, *args, **kw)
        except MySQLdb.OperationalError, e:
            if e[0] not in (2006, 2013):
                raise
            log.msg("RCP: got error %s, retrying operation" %(e))
            conn = self.connections.get(self.threadID())
            self.disconnect(conn)
            # try the interaction again
            return adbapi.ConnectionPool._runInteraction(self, interaction, *args, **kw)
.

взяты отсюда: http://www.gelens.org/2009/09/13/Verved-ConnectionPool-Revisized /

Тем не менее, исключение не попадает не только в нашем рекордектированном контакте, но в себе тоже в _Рунинерции.И это триггеры log.err, что (видимо) делает две вещи:

    .
  • Распечатать ошибку - хотя наше приложение работает нормально
  • Что хуже, это делает пробные провал, поэтому тесты проваливаются.Я не совсем уверен, что это проблема log.err, но тем не менее, это происходит.

Я мог бы взломать Adbapi, но это, вероятно, не лучшая идея.Есть ли лучшие способы справиться с этим?

Это было полезно?

Решение

Вы спрашиваете, как сделать тестовый пропуск единицы, даже если ошибка зарегистрирована?Попробуйте clexloggedErrors .Если вы задаете что-то еще, пожалуйста, уточните.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top