Последняя версия DataExpress 3 beta от 15 ноября 2020 года.

Изображение Скачать | Изображение Что нового?



Объявление:

Если вам понравилась программа и вы ее интенсивно используете - замолвите словечко о ней на вашем сайте (блоге, форуме, твитере, краской на подъезде, ютуб-канале и т.д.) с активной (по-возможности) ссылкой на сайт программы/форум. Тем самым вы можете внести небольшой вклад в seo-карму проекта в виде входящих ссылок.
Спасибо! Администрация :)


>> Обсудить <<


Внимание! Кража данных


Остановить HTTPClient если сервер не отвечает

Аватара пользователя
Иван
Интересующийся
Сообщения: 215
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 33 раза
Поблагодарили: 51 раз

Остановить HTTPClient если сервер не отвечает

Сообщение Иван » 02 май 2020, 22:35

Есть необходимость при работе с файловым сервером через интернет при каком либо действии проверять доступность сервера, как можно остановить запрос THTTPClient если идет проверка доступности и сервер не ответил? Есть свойство IOTimeout но что то оно ничего не делает, крутит стабильно 21 секунду если нет ответа.

Решил через curl --connect-timeout записывая в файл ответ и считывая каждый раз, но может как то можно и встроенными методами это сделать через клиент?

Аватара пользователя
Develop-Soft
Сообщения: 1940
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 123 раза
Поблагодарили: 540 раз
Контактная информация:

Остановить HTTPClient если сервер не отвечает

Сообщение Develop-Soft » 05 май 2020, 01:18

Иван писал(а):при работе с файловым сервером через интернет при каком либо действии проверять доступность сервера
А точнее..?

Аватара пользователя
Иван
Интересующийся
Сообщения: 215
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 33 раза
Поблагодарили: 51 раз

Остановить HTTPClient если сервер не отвечает

Сообщение Иван » 05 май 2020, 09:48

Develop-Soft писал(а):
Иван писал(а):при работе с файловым сервером через интернет при каком либо действии проверять доступность сервера
А точнее..?


Основное для попытки повторной отправки файлов через интернет, если с первого раза их не отправило. Вдруг файлы добавил менеджер но в этот момент был недоступен файловый сервер их пишет в лист ожидания. Заходя на новую запись модуль отправляет запрос на сервер и если есть доступ то снова пробует отправить файлы из списка ожидания. Если вот этой проверки нет то каждый вход на новую запись 21 секунда, при отключенном сервере. Сейчас решил через curl проверку, но было б неплохо в самом ДХ ограничение писать, так как если сбой во время отправки файла то повиснет на те же 21 секунду пока не обрубит и не запишет файл в лист ожидания.

Аватара пользователя
Develop-Soft
Сообщения: 1940
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 123 раза
Поблагодарили: 540 раз
Контактная информация:

Остановить HTTPClient если сервер не отвечает

Сообщение Develop-Soft » 05 май 2020, 12:36

Раз 5 перечитал и не нашел никаких зацепок - что, куда, зачем...

Аватара пользователя
Иван
Интересующийся
Сообщения: 215
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 33 раза
Поблагодарили: 51 раз

Остановить HTTPClient если сервер не отвечает

Сообщение Иван » 05 май 2020, 12:41

Develop-Soft писал(а):Раз 5 перечитал и не нашел никаких зацепок - что, куда, зачем...


Просто что б не зависала программа во время работы грубо говоря, если сервер в данный момент недоступен, а мы работаем с файлами. Если через 1 секунду нет ответа от сервера то обрубило процесс запроса и написало - пока нет связи.

Аватара пользователя
Develop-Soft
Сообщения: 1940
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 123 раза
Поблагодарили: 540 раз
Контактная информация:

Остановить HTTPClient если сервер не отвечает

Сообщение Develop-Soft » 05 май 2020, 12:44

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

Аватара пользователя
Иван
Интересующийся
Сообщения: 215
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 33 раза
Поблагодарили: 51 раз

Остановить HTTPClient если сервер не отвечает

Сообщение Иван » 05 май 2020, 12:48

Develop-Soft писал(а):Без деталей лучше не станет. Способов проверки связи может быть множество. А что за сервер, каким способом и что передается, какие ещё необходимо условия соблюсти - загадка...


Сервер и клиент на базе ДХ. Расширение файловая система HTTP + LOCAL
Если ответ есть то на проверочный запрос выдает true. Но суть в том что если сервак выключен то 21 секунду крутит и ждет. Это по умолчанию в ДХ.

Vofka18
Знаток
Сообщения: 471
Зарегистрирован: 04 мар 2018, 16:54
Благодарил (а): 46 раз
Поблагодарили: 53 раза

Остановить HTTPClient если сервер не отвечает

Сообщение Vofka18 » 05 май 2020, 13:25

Я далеко не спец в данной теме, но могу предположить что 21 сек. Это тайм-аут ответа сервера, он обязан попробовать дождаться ответа. Если таймаут и удастся уменьшить, то возможно будут глюки с медленным соединением. Может вам попробовать сначала пинговать сервер?, если это возможно средствами dx.

Аватара пользователя
Иван
Интересующийся
Сообщения: 215
Зарегистрирован: 22 дек 2018, 14:16
Откуда: Kiev
Благодарил (а): 33 раза
Поблагодарили: 51 раз

Остановить HTTPClient если сервер не отвечает

Сообщение Иван » 05 май 2020, 13:33

Vofka18 писал(а):Я далеко не спец в данной теме, но могу предположить что 21 сек. Это тайм-аут ответа сервера, он обязан попробовать дождаться ответа. Если таймаут и удастся уменьшить, то возможно будут глюки с медленным соединением. Может вам попробовать сначала пинговать сервер?, если это возможно средствами dx.


Сейчас проверка идет через powershell с ограничением 1 секунда. В принципе все ок. Просто хотелось обойтись без костылей и иметь возможность обрубать клиент если что то пошло не так. Но судя по всему это пока недоступно. Была надежда что это может делать IOTimeout.

Vofka18
Знаток
Сообщения: 471
Зарегистрирован: 04 мар 2018, 16:54
Благодарил (а): 46 раз
Поблагодарили: 53 раза

Остановить HTTPClient если сервер не отвечает

Сообщение Vofka18 » 05 май 2020, 13:45

Иван писал(а):
Vofka18 писал(а):Я далеко не спец в данной теме, но могу предположить что 21 сек. Это тайм-аут ответа сервера, он обязан попробовать дождаться ответа. Если таймаут и удастся уменьшить, то возможно будут глюки с медленным соединением. Может вам попробовать сначала пинговать сервер?, если это возможно средствами dx.


Сейчас проверка идет через powershell с ограничением 1 секунда. В принципе все ок. Просто хотелось обойтись без костылей и иметь возможность обрубать клиент если что то пошло не так. Но судя по всему это пока недоступно. Была надежда что это может делать IOTimeout.

В том то и проблема, клиент определит, что что-то не так только через 21 сек. В противном случае (если уменьшить тайм-аут), при плохом соединении он будет постоянно думать , что что-то не так :-) Вам в любом случае нужно другим способом проверять наличие связи с сервером, а потом выполнять свои действия. Я когда-то на шарпе писал подобное ПО, и там я сначала посылал пинг, если пингуется тогда шел дальше, если нет то выдавал сообщение, что ip не доступен. Но ваш вариант скорее не костыль, а вполне себе решение.


Вернуться в «Встроенный веб-сервер»