Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 gbak с удаленной машины через python кто-то запускал?  [new]
miwaonline
Member

Откуда:
Сообщений: 2249
На удивление медленно работает. Локалка 100 мегабит, свежеотресторенная база данных меньше 100 мегабайт. С обеих сторон Firebird 2.5 на Debian GNU/Linux. Из консоли команда

gbak -b -user sysdba -pass masterkey 192.168.21.25:/usr/database/localtest1.fdb localtest.fbk

отрабатывает за пару секунд. Из-под питона уже минут двадцать думает. Файл бекапа за это время - чуть больше 4 мегабайт. Проц, память и диск на обеих машинах практически свободны.

Я понимаю, что здесь не то что питон, дельфи никто не знает; но вдруг кто сталкивался с подобным?

P.S. python 2.6, gbak вызываю через subprocess.popen/subprocess.communicate
14 окт 11, 17:37    [11443118]     Ответить | Цитировать Сообщить модератору
 Re: gbak с удаленной машины через python кто-то запускал?  [new]
hvlad
Member

Откуда:
Сообщений: 10460
miwaonline
subprocess.communicate
Вот это вот - что такое ? чтение питоном из stdout gbak'а ?
14 окт 11, 17:45    [11443170]     Ответить | Цитировать Сообщить модератору
 Re: gbak с удаленной машины через python кто-то запускал?  [new]
miwaonline
Member

Откуда:
Сообщений: 2249
hvlad,

Да, что-то типа того. Код вызова такой:
    proc = subprocess.Popen(bkexec,
                            stderr=subprocess.PIPE,
                            stdout=subprocess.PIPE)
    res = proc.communicate()
    if res[0]:
        //error
    else:
        //success
где bkexec - сформированная строка, приведенная мною в первом посте.

На всякий случай - вот описание из питоновской доки.
14 окт 11, 17:57    [11443258]     Ответить | Цитировать Сообщить модератору
 Re: gbak с удаленной машины через python кто-то запускал?  [new]
hvlad
Member

Откуда:
Сообщений: 10460
miwaonline,

могу только предположить, что коммуникация между процессами тормозит.
Попробуй без неё, для проверки.
14 окт 11, 18:03    [11443297]     Ответить | Цитировать Сообщить модератору
 Re: gbak с удаленной машины через python кто-то запускал?  [new]
miwaonline
Member

Откуда:
Сообщений: 2249
hvlad,

Проверял - использовал wait вместо communicate. Результат тот же.

Сейчас запустил gbak через питон локально (в строчке bkexec база данных задана как 127.0.0.1:/usr/database/localtest1.fdb). База данных 325 мегабайт, через питон бекап длился 81 секунду, напрямую из консоли (через time) - 47 секунд.

Отсюда вывод, что питоновский communicate существенно тормозит gbak. Правда, вопросс, почему это же делает wait.
14 окт 11, 18:23    [11443400]     Ответить | Цитировать Сообщить модератору
 Re: gbak с удаленной машины через python кто-то запускал?  [new]
oleg_m
Member

Откуда:
Сообщений: 1101
miwaonline
Сейчас запустил gbak через питон локально (в строчке bkexec база данных задана как 127.0.0.1:/usr/database/localtest1.fdb). База данных 325 мегабайт, через питон бекап длился 81 секунду, напрямую из консоли (через time) - 47 секунд.

добавь-ка к ключам -g
для чистоты эксперимента
14 окт 11, 19:01    [11443604]     Ответить | Цитировать Сообщить модератору
 Re: gbak с удаленной машины через python кто-то запускал?  [new]
miwaonline
Member

Откуда:
Сообщений: 2249
oleg_m,

Ничего не изменится, базы во всех случаях свежеотресторенные.
14 окт 11, 19:45    [11443859]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить