|
v7: Задержки при получении ответа на запрос | ☑ | ||
---|---|---|---|---|
0
brenli
18.12.19
✎
14:26
|
Всем добра.
Пытаюсь получить ответ на запрос, но все проходит очень долго. Т.е при выполнении какого либо задания и попытки получить ответ, проходит несколько секунд. Запрос = "http://127.0.0.1:16732/requests/"+UID; WinHttpRequest = СоздатьWinHttpRequest(Запрос ,"GET"); // WinHttpRequest.SetTimeouts(1,1,1,1); WinHttpRequest.send(); Сообщить(" "+WinHttpRequest.ResponseText); Что не так? Пытался устанавливать таймаут - все точно так же. |
|||
1
mistеr
18.12.19
✎
14:27
|
(0) А через браузер как?
|
|||
2
Kigo_Kigo
18.12.19
✎
14:55
|
А замер производительности что говорит?
Можно поиграться разными версиями WinHttp, но ИМХО проблема не ней и не в 1с, а настройках соеденения |
|||
3
brenli
18.12.19
✎
15:09
|
(1) Через браузер быстро. Моментально
|
|||
4
brenli
18.12.19
✎
15:09
|
(2) Замер между чем и чем?
|
|||
5
brenli
18.12.19
✎
15:14
|
http://127.0.0.1:16732/requests/018BB296-9F0B-49F4-8F6E-6B27D74C9E60
{"results":[{"result":null,"errorDescription":"","errorCode":0,"status":"inProgress"}]} http://127.0.0.1:16732/requests/018BB296-9F0B-49F4-8F6E-6B27D74C9E60 {"results":[{"result":null,"errorDescription":"Порт недоступен","errorCode":4,"status":"error"}]} Между этими записями разница секунд в 15 |
|||
6
brenli
18.12.19
✎
15:15
|
Хочу уточнить. Соединение в этот момент не висит. 1с не висит.
Просто сначала идут пустые ответы, а спустя ~15 секунд с данными. |
|||
7
brenli
18.12.19
✎
15:23
|
(1) Я ошибся. Через браузер точно так же.
|
|||
8
Kigo_Kigo
18.12.19
✎
15:24
|
что то не так в запросе, у вас порт не доступен, зависает в таймауте ответа
|
|||
9
brenli
18.12.19
✎
15:27
|
(8) А потом выдает.
И в статусе пишет inProgress |
|||
10
brenli
18.12.19
✎
15:28
|
+(9) Запрос элементарный "http://127.0.0.1:16732/requests/"+UID;
|
|||
11
Kigo_Kigo
18.12.19
✎
15:50
|
(10) Короче у меня такая же шляпа, если в запросе что то не так или json кривой, то ответ 15-20 сек, если все верно - то моментально, копайте в этом направлении, либо в запросе, либо в самом хттп серваке в приемке/обработке запроса
|
|||
12
mistеr
18.12.19
✎
18:09
|
(7) К 1С вопросы еще есть?
|
|||
13
brenli
19.12.19
✎
09:44
|
(12) Да.
Добился все работает быстро, но из 1с все равно вываливается пустой ответ. Выполняю операцию пробития чека и сразу же делаю запрос о состоянии - видимо 1с делает эти запросы очень быстро и ответ еще не успевает получиться. Т.е я попробовал "развесить" процедуры с выполнением и запросом состояния по разным кнопкам - в результате все работает сразу. Но если их запускать друг за другом результат вываливается не заполненый значениями. Как быть? Поставить какой то таймаут на 500 мс? |
|||
14
mistеr
19.12.19
✎
09:57
|
(13) > Поставить какой то таймаут на 500 мс?
Да. В цикле, до определенного максимума, например до 5 с. |
|||
15
brenli
19.12.19
✎
12:19
|
В 1с как то можно обработать события http ?
OnResponseFinished например |
|||
16
Djelf
19.12.19
✎
12:30
|
(15) Штатно нет, не штатно можно попробовать это:
http://www.1cpp.ru/forum/YaBB.pl?num=1390467243 http://www.1cpp.ru/forum/YaBB.pl?num=1152684759 |
|||
17
brenli
19.12.19
✎
12:43
|
(16) Спасибо
|
|||
18
brenli
20.12.19
✎
14:08
|
Продолжаю курить эту тему. Сделал таймаут из простого цикла - но проблема в том что таймаут требуется всегда разный.
(16) и я думаю даже это не помогло бы. Ответ приходит моментально - только статус этого ответа - result null errorDescription errorCode 0 status inProgress <--- , а время работы эквивалентно размеру задания. 1 позиция в чеке или 50 - таймаут разный. Слишком большие таймауты не резонно ставить на чеки с малым количеством строк. Какие еще есть варианты? Рекурсивно раз в секунду бомбить web сервер запросом пока он не ответить что то другое? |
|||
19
Djelf
20.12.19
✎
14:14
|
(18) Сначала бомбить, но при этом записывать в табличку усредненные таймауты по количеству позиций.
Потом уже бомбить после вычисленного таймаута. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |