@hardwellZero

Как реализовать реконект к БД каждые N секунд?

Добрый вечер.
Есть вот такая функция:
def __init__(self):
        ''' creates a connection at the initialization moment
        and also a cursor used later '''
 
        try:
            # creates a connection
            self.conn = MySQLdb.connect(  host = self.dbhost,
                                        port = self.dbport,
                                        user = self.dbuser,
                                        passwd = self.dbpass
                                    )
            self.cursor = self.conn.cursor()
        except MySQLdb.Error, e:
            print "Error %d: %s" % (e.args[0], e.args[1])
            
            sys.exit (1)

Сейчас хочу реализовать так, что-бы при ошибке подключения, через 5 секунд происходил реконект и так по кругу до успешного подключения.
Как можно прикрутить такое? Видел как реализовано с кол-вом попыток, но это не то.
  • Вопрос задан
  • 414 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
В чём проблема? Зациклите код вместо exit'а по условию успешности установленного коннекта
Псевдокод:
is_connect_success = false
do
try
//connect
is_connect_success = true
except
print error
sleep 5 seconds
while (is_connect_success)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
EagleMoor
@EagleMoor
PHP Yii2 RESTful API Developer
while (1 == 1) кто-то отменял?
Ответ написан
ptitca_zu
@ptitca_zu
Programmer. Reader. Introvert
Как-то так:
def __init__(self):
    while True:
        ''' creates a connection at the initialization moment
        and also a cursor used later '''
 
        try:
            # creates a connection
            self.conn = MySQLdb.connect(  host = self.dbhost,
                                        port = self.dbport,
                                        user = self.dbuser,
                                        passwd = self.dbpass
                                    )
            self.cursor = self.conn.cursor()
            break
        except MySQLdb.Error, e:
            print "Error %d: %s" % (e.args[0], e.args[1])
            time.sleep(5)
Ответ написан
Комментировать
kivsiak
@kivsiak
software engineer
А нафига вам велосипед?

docs.sqlalchemy.org/en/latest/core/pooling.html или
dev.mysql.com/doc/connector-python/en/connector-py... чем не устраивает?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы