Добавьте в настройки соединений параметр "При n неудачных попыток переключаться на другой сервер". А то приходится отключать возможность автоматического переключения, иначе при каждом "чихе" QUIK будет прыгать с одного сервера на другой и перекачивать все данные заново.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Добавьте в настройки соединений параметр "При n неудачных попыток переключаться на другой сервер". А то приходится отключать возможность автоматического переключения, иначе при каждом "чихе" QUIK будет прыгать с одного сервера на другой и перекачивать все данные заново.
Добрый день.
В пункте меню Связь/Доступные соединения есть пункт "При восстановлении использовать только параметры последнего соединения". По умолчанию настройка включена. Отключите ее. В таком случае настройка будет работать следующим образом:
Код
Если флажок снят, то следующее соединение будет устанавливаться с настройками,
указанными в следующей строке списка «Информация о соединениях». Для
этого необходимо упорядочить список доступных соединений с помощью кнопок
«вверх» и «вниз» в соответствии с желаемой очередностью перебора соединений.
Серж пишет: А то приходится отключать возможность автоматического переключения, иначе при каждом "чихе" QUIK будет прыгать с одного сервера на другой и перекачивать все данные заново.
Нужно, чтобы QUIK переключался на другой сервер через заданное количество неудачных попыток подключения.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Нужно, чтобы QUIK переключался на другой сервер через заданное количество неудачных попыток подключения.
А Вы попробуйте добавить в список соединений несколько одинаковых (на один и тот же сервер). Тогда он будет их перебирать столько раз, сколько Вам нужно, пока не дойдет до соединения с другим сервером. Решение корявое, но пока разработчики внесут исправление в программу (если вообще внесут) - это может решить Вашу проблему.
это решение - никакое. не хотел это тут говорить но, у меня двойная авторизция и все ваши плюшечки с тем, что можно по-быстрому переподключиться у меня не проходят. мне приходится указывать помимо пароля ещё и место ключеового контейнера. а стоит серверу потерять коннект - ЭЦП сразу воет, что надо ввести ключ
Дмитрий пишет: А Вы попробуйте добавить в список соединений несколько одинаковых (на один и тот же сервер). Тогда он будет их перебирать столько раз, сколько Вам нужно, пока не дойдет до соединения с другим сервером.
А это мысль. Спасибо.
Цитата
sam063rus пишет: мне приходится указывать помимо пароля ещё и место ключеового контейнера. а стоит серверу потерять коннект - ЭЦП сразу воет, что надо ввести ключ
Это одна из причин, почему я не использую ЭЦП и не перехожу к брокеру с обязательной авторизацией по ЭЦП.
Надо делать так, как надо. А как не надо - делать не надо.
sam063rus, за последнее время я пользовался услугами двух широко известных брокеров и у обоих есть возможность не защищать ключ паролем, а путь к ключевому носителю задавался только один раз.
Финам, ВТБ-24 - вроде немаленькие брокера. А геморра с ЭП у них нет. Мне например эта пресловутая безопасность нафиг не нужна. Куда они будут потом с помощью моих ключей девать деньги ? Переливать на другой счет при помощи убыточных сделок. Ну-ну.
А за хинт
Цитата
Серж пишет: А Вы попробуйте добавить в список соединений несколько одинаковых (на один и тот же сервер). Тогда он будет их перебирать столько раз, сколько Вам нужно, пока не дойдет до соединения с другим сервером.
большое спасибо. Вроде как и очевидно, а вроде и не догадаешься )
Дмитрий пишет: А Вы попробуйте добавить в список соединений несколько одинаковых (на один и тот же сервер). Тогда он будет их перебирать столько раз, сколько Вам нужно, пока не дойдет до соединения с другим сервером.
К сожалению, это решение немногим лучше его отсутствия: сервер будет перебираться заданное количество раз только при первом обрыве связи, при последующих обрывах - всё меньшее число раз, и, в итоге, перескочит на другой сервер. Так что вопрос остаётся открытый:
Цитата
Серж пишет: Добавьте в настройки соединений параметр "При n неудачных попыток переключаться на другой сервер".
Надо делать так, как надо. А как не надо - делать не надо.
1. Поддерживаю пожелание Серж о доработке терминала Quik.
2. Серж, пока наше пожелание о доработке терминала не будет реализовано, Вашу проблему можно попробовать решить другим способом (при условии, что на всех серверах подключение производится на порт с одинаковым номером и с использованием одинакового ключа сервера). В приведенном ниже варианте решения этой проблемы задается не число попыток подключения к одному серверу, а время, в течение которого терминал будет пытаться к нему подключиться до принятия решения о переключении на другой сервер. 1) Добавляем в терминале в список доступных соединений (Связь / Доступные соединения) новое, в поле "Сетевой адрес" которого указываем virtual.srv (описание соединения можно использовать любое). Включаем настройку "использовать только параметры последнего соединения". 2) Добавляем в файл C :\ WINDOWS\system32\drivers\etc\hosts строку следующего вида: xxx.xxx.xxx.xxx virtual.srv где xxx.xxx.xxx.xxx - айпи адрес одного из ваших серверов 3) Копируем файл C :\ WINDOWS\system32\drivers\etc\hosts в файл hosts.s2 в том же каталоге. В файле hosts.s2 заменяем строку xxx.xxx.xxx.xxx virtual.srv на yyy.yyy.yyy.yyy virtual.srv где yyy.yyy.yyy.yyy - айпи адрес второго вашего сервера 4) Запускаем на терминале приведенный ниже скрипт (его можно запустить один раз и больше не трогать, тогда при каждом перезапуске терминала этот скрипт будет запускаться автоматически):
Код
-- скрипт обеспечивает последовательное переключение между двумя серверами при потере связи
-- и невозможности восстановить подключение к текущему серверу в течение timeout секунд
timeout = 240 -- задержка (в секундах) перед сменой сервера
function OnInit(script_path)
stopped = false
count = -1 -- отсчет времени до переключения на другой сервер сейчас не ведется
local sys_root = os.getenv("SystemRoot") -- определяем расположение каталога с работающей сейчас системой Windows
if sys_root == nil then
message("Не удалось найти каталог Windows", 2)
stopped = true
else
Directory = sys_root .. "\\system32\\drivers\\etc\\" -- каталог с файлом hosts
end
end
function OnStop(stop_flag)
stopped = true
end
function OnDisconnected()
count = timeout -- запускаем отсчет времени до переключения на другой сервер
end
function OnConnected()
count = -1 -- останавливаем отсчет времени до переключения на другой сервер
end
-- Функция проверяет существование файла с заданным именем fname. Если файл существует, возвращает true, иначе - false
function exist(fname)
local file = io.open(fname, "r") -- пытаемся открыть файл для чтения
if file == nil then -- скорей всего файла с таким именем нет
return false
else -- файл с таким именем существует
file:close()
return true
end
end
function switch_server()
local f_old = ""
local f_new = ""
if exist(Directory .. "hosts.s2") and (not exist(Directory .. "hosts.s1")) and exist(Directory .. "hosts") then
f_old = "hosts.s1" -- имя файла, используемого сейчас
f_new = "hosts.s2" -- имя файла, который будем использовать
elseif exist(Directory .. "hosts.s1") and (not exist(Directory .. "hosts.s2")) and exist(Directory .. "hosts") then
f_old = "hosts.s2" -- имя файла, используемого сейчас
f_new = "hosts.s1" -- имя файла, который будем использовать
end
if f_old ~= "" then
local res, err = os.rename(Directory .. "hosts", Directory .. f_old) -- переименовываем файл hosts в hosts.s1 или hosts.s2
if res == nil then
message("Ошибка при переименовании файла " .. err, 2)
else
res, err = os.rename(Directory .. f_new, Directory .. "hosts") -- переименовываем файл hosts.s1 или hosts.s2 в hosts
if res == nil then
message("Ошибка при переименовании файла " .. err, 2)
else
message("Переключаемся на другой сервер", 1)
end
end
end
count = timeout -- запускаем отсчет по-новой
end
function main()
while not stopped do
if count >= 0 then
count = count - 1
end
if count == 0 then
switch_server()
end
sleep(1000)
end
end
5) Подключаемся к созданному нами новому соединению (у которого в поле "Сетевой адрес" указано virtual.srv).
P.S.: Если вы используете Windows 7, то терминал нужно запускать от имени администратора, иначе он не сможет переименовывать файлы в каталоге WINDOWS\system32\drivers\etc
1) У меня была мысль, что значение переменной timeout должно быть больше значения параметра check-tmo из файла info.ini, поскольку при появлении сообщений "вы уже работаете в системе" повторное подключение к серверу возможно не ранее чем через check-tmo секунд. 2) С другой стороны, если обнаружение обрыва связи и вызов функции OnDisconnected() происходят только по истечении check-tmo секунд с момента прекращения обмена данными с сервером, то значение переменной timeout можно задавать без оглядки на значение параметра check-tmo.
Было бы очень хорошо, если бы разработчики пояснили, какой из двух приведенных выше вариантов будет верным.