Автоматическое переключение на другой сервер

Страницы: 1
RSS
Автоматическое переключение на другой сервер
 
Добавьте в настройки соединений параметр "При n неудачных попыток переключаться на другой сервер".
А то приходится отключать возможность автоматического переключения, иначе при каждом "чихе" QUIK будет прыгать с одного сервера на другой и перекачивать все данные заново.
 
Цитата
Серж пишет:
Добавьте в настройки соединений параметр "При n неудачных попыток переключаться на другой сервер".
А то приходится отключать возможность автоматического переключения, иначе при каждом "чихе" QUIK будет прыгать с одного сервера на другой и перекачивать все данные заново.
Добрый день.

В пункте меню Связь/Доступные соединения есть пункт "При восстановлении использовать только параметры последнего соединения". По умолчанию настройка включена. Отключите ее. В таком случае настройка будет работать следующим образом:

Код
Если флажок снят, то следующее соединение будет устанавливаться с настройками, 
указанными в следующей строке списка «Информация о соединениях». Для 
этого необходимо упорядочить список доступных соединений с помощью кнопок 
«вверх» и «вниз» в соответствии с желаемой очередностью перебора соединений. 
 
 
Цитата
Серж пишет:
А то приходится отключать возможность автоматического переключения, иначе при каждом "чихе" QUIK будет прыгать с одного сервера на другой и перекачивать все данные заново.
Нужно, чтобы QUIK переключался на другой сервер через заданное количество неудачных попыток подключения.
 
а что делать, если он будет просить заново вводить учётные данные(пароль, место хранения ключевого контейнера)?
 
Цитата
Серж пишет:
Нужно, чтобы QUIK переключался на другой сервер через заданное количество неудачных попыток подключения.
А Вы попробуйте добавить в список соединений несколько одинаковых (на один и тот же сервер). Тогда он будет их перебирать столько раз, сколько Вам нужно, пока не дойдет до соединения с другим сервером.
Решение корявое, но пока разработчики внесут исправление в программу (если вообще внесут) - это может решить Вашу проблему.
 
это решение - никакое. не хотел это тут говорить но, у меня двойная авторизция и все ваши плюшечки с тем, что можно по-быстрому переподключиться у меня не проходят. мне приходится указывать помимо пароля ещё и место ключеового контейнера. а стоит серверу потерять коннект - ЭЦП сразу воет, что надо ввести ключ
 
Цитата
Дмитрий пишет:
А Вы попробуйте добавить в список соединений несколько одинаковых (на один и тот же сервер). Тогда он будет их перебирать столько раз, сколько Вам нужно, пока не дойдет до соединения с другим сервером.
А это мысль. Спасибо.
Цитата
sam063rus пишет:
мне приходится указывать помимо пароля ещё и место ключеового контейнера. а стоит серверу потерять коннект - ЭЦП сразу воет, что надо ввести ключ
Это одна из причин, почему я не использую ЭЦП и не перехожу к брокеру с обязательной авторизацией по ЭЦП.
 
а что сейчас разве есть те которые работают без ЭЦП?
 
Может, я что-то не понимаю, но по-моему есть возможность использовать ЭЦП без запроса пароля и прописать место ключевого контейнера только один раз.
 
Цитата
sam063rus пишет:
а что сейчас разве есть те которые работают без ЭЦП?
Блин, спалился  :D  Короче,я этого не говорил. И с вами не знаком, если что.  :D
 
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.

Было бы очень хорошо, если бы разработчики пояснили, какой из двух приведенных выше вариантов будет верным.
 
Цитата
Серж пишет:
Автоматическое переключение на другой сервер
Добрый день.

Сергей, Ваше пожелание зарегистрировали.
Страницы: 1
Читают тему (гостей: 1)
Наверх