Форум сайта python.su
Подскажите как правильно проверить есть подключение к серверу или нет. Целиком : пользователь вводит пароль , ну и если есть связь с сервером - начинает работать , если связи нет - выдается сообщение о отсутствии подключения. Сейчас у меня это реализовано через запрос к функции (на стороне сервера), которая просто выдает ‘OK’, но должен быть более “правильный” способ, какой?
Офлайн
классика
select 1;
в mysql есть ping, pg_ping вроде есть в РНР но он скорей всего и делает select 1 )
Офлайн
А применительно к psycopg есть решения?
Офлайн
Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:
import sys
import psycopg
try:
conn = psycopg.connect(database="test")
except OperationalError, exobj:
print "не могу подключиться к серверу. ошибка:", exobj
sys.exit(1)
print "подключились, работаем"
Отредактировано (Янв. 3, 2009 21:11:59)
Офлайн
EdЭто решение далеко не всегда спасает. Если программа будет работать длительное время, то сервер БД может закрыть соединение в случае долгого его бездействия по таймауту. Поэтому ИМХО единственный приемлемый вариант - тот что предложил slav0nic.
Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:
Офлайн
согласен с slivlen.
для обработки этого случая можно использовать:
try:
cursor1.execute("select 1;")
except psycopg2.ProgrammingError, msgs:
...
except psycopg2.extensions.QueryCanceledError, msgs:
...
Офлайн