|
Web сервисы (Параллельное выполнение) | ☑ | ||
---|---|---|---|---|
0
miklenew
02.10.15
✎
11:46
|
Создал web сервис в 1с. Создал публикацию в апач.
Подключаюсь к web сервис, запускаю функцию веб сервиса. Выполняется минут 5. Пока не прошли 5 минут пытаюсь подключиться снова к серверу апач. Новый WSОпределения(Путь, Пользователь, Пароль) Даже подключиться не даёт. Ждёт 5 минут, потом только даёт подключение. То есть работа происходит в последовательном режиме. Пробывал сделать две публикации в разные папки. Да так даёт возможность параллельно работать. Но это ж ерунда какая то. А если 10-20 пользователей. Они чё должны друг друга ждать? Кто нибудь сталкивался с такой проблемой? |
|||
1
Cyberhawk
02.10.15
✎
11:48
|
Так а ты под другим пользователем подключался во второй раз?
|
|||
2
НеБорис Нуралиев
02.10.15
✎
11:57
|
Модуль вебсервера в 1С 8 вроде однопоточный...
|
|||
3
Fragster
гуру
02.10.15
✎
12:00
|
для файловой базы так и будет
|
|||
4
Fragster
гуру
02.10.15
✎
12:04
|
ну и да - вебсервис, который выполняется 5 минут - это жестковато при синхронном выполнении.
Два варианта (по возмодности): 1. надо сделать вебсервис, который стартует фоновое и возвращает ИД фонового, и с другой стороны периодически спрашивать, как там через другой вебсервис. При выполнении забирает результат (например из временного хранилища или из данных сообщений фонового задания с нашим ИД). 2. надо сделать вебсервис, который стартует фоновое и возвращает ОК, фоновое задание в конце вызывает вебсервис базы, которая инициировала первый вызов и передает туда результаты.. |
|||
5
miklenew
02.10.15
✎
12:04
|
(1) Пробывал разными пользователями. Эффект тот же
(2) Какой модуль? это ж происходит на уровне апача. (3) Да файловая. Но ведь если две публикации одной базы делать, появляется многопоточность. |
|||
6
Fragster
гуру
02.10.15
✎
12:06
|
||||
7
miklenew
02.10.15
✎
12:06
|
(4) База файловая. Не запустиш фоновое задание. Просто странно было бы если например к сайту чтоб доступ иметь пользователи ждали бы друг друга. Т.е. у апача много поточность присутствует. Выходит 1С какой то кастыль вставила что много поточность перестала работать
|
|||
8
Fragster
гуру
02.10.15
✎
12:07
|
(7) в файловой базе с версии 8.3.3 фоновые работают
|
|||
9
Fragster
гуру
02.10.15
✎
12:07
|
||||
10
miklenew
02.10.15
✎
12:10
|
(9) Спасибо за ссылку. Читаю.
У нас древняя УТ. Переделывать на 8.3 врятли будем |
|||
11
НеБорис Нуралиев
02.10.15
✎
12:14
|
(5) К апачу 1С подключается через модуль расширения. Вот он и есть однопоточный (если работаешь в файловом варианте).
|
|||
12
НеБорис Нуралиев
02.10.15
✎
12:14
|
(3) Да, точно. В клиент-серверном возможна параллельная работа.
|
|||
13
oleg_km
09.10.15
✎
09:45
|
(12) А откуда дровишки? Я сделал тестовый HTTP-сервер, вроде модуль веб-расширения тот-же. База клиент-серверная. В обработке запроса установил задержку на 20 сек. Запустил из браузера несколько запросов. Каждый последующий начинает обрабатываться только после окончания предыдущего
|
|||
14
Asmody
09.10.15
✎
09:55
|
запусти N инстансов апачей на разных портах, а перед ними поставь nginx с upstream
|
|||
15
oleg_km
09.10.15
✎
09:58
|
(14) А, вот оно что. Ну тогда ладно. А в букваре где-нибудь про это написано?
|
|||
16
pumbaEO
09.10.15
✎
10:09
|
(14) haproxy наше все
|
|||
17
Asmody
09.10.15
✎
10:14
|
(16) Суть решения не меняется. Остается только как-то определить идентификатор сессии.
|
|||
18
pumbaEO
09.10.15
✎
10:17
|
(17) в haproxy это есть, запоминание сессий
|
|||
19
Fragster
гуру
09.10.15
✎
10:19
|
(13) без кода не сказать. вообще они параллельно работают.
|
|||
20
oleg_km
09.10.15
✎
10:26
|
(19)
Начало = ТекущаяДата(); // БиблАП.ПолучитьNET().Приостановить(20000); Пока ТекущаяДата() < Начало + 20 Цикл БиблАП.ПолучитьNET().Приостановить(500); КонецЦикла; рез = " |<!DOCTYPE HTML> |<html> | <head> | <meta charset=""utf-8""> | <title>Проверка</title> | </head> | <body> | Проверка<br> | %1<br> | %2 | </body> |</html>"; Ответ = Новый HTTPСервисОтвет(200); Ответ.УстановитьТелоИзСтроки(СтрШаблон(рез, Начало, ТекущаяДата())); Возврат Ответ; |
|||
21
Fragster
гуру
09.10.15
✎
10:30
|
(20) может компонента блокирующая? попробуй ЗапуститьПриложение("ping 127.0.0.1").
|
|||
22
MaxisUssr
09.10.15
✎
10:33
|
(0)
В клиент-серверной - выполняется параллельно. По крайней мере на нашем сервере, если тестировать с помощью например SoapUI (пулять 500 запросов в секунду) |
|||
23
MaxisUssr
09.10.15
✎
10:33
|
(22)
Под разными потоками |
|||
24
oleg_km
09.10.15
✎
10:53
|
(21) Ну она действительно блокирующая, я же блокирую поток.
Но я переделал Функция ОсновнойЛюбой(Запрос) Начало = ТекущаяДата(); // БиблАП.ПолучитьNET().Приостановить(20000); //Пока ТекущаяДата() < Начало + 20 Цикл // БиблАП.ПолучитьNET().Приостановить(500); //КонецЦикла; Пока ТекущаяДата() < Начало + 20 Цикл ЗапуститьПриложение("ping 192.168.10.8 -w 20000"); КонецЦикла; рез = " |<!DOCTYPE HTML> |<html> | <head> | <meta charset=""utf-8""> | <title>Проверка</title> | </head> | <body> | Проверка<br> | %1<br> | %2 | </body> |</html>"; Ответ = Новый HTTPСервисОтвет(200); Ответ.УстановитьТелоИзСтроки(СтрШаблон(рез, Начало, ТекущаяДата())); Возврат Ответ; КонецФункции Запускаю два браузера с интервалом 5 сек: Проверка 09.10.2015 10:51:10 09.10.2015 10:51:30 Проверка 09.10.2015 10:51:32 09.10.2015 10:51:52 |
|||
25
Fragster
гуру
09.10.15
✎
10:56
|
ЗапуститьПриложение("...", , Истина);
Ну и да - у тебя точно клиент-серверная база? |
|||
26
oleg_km
09.10.15
✎
11:03
|
(25) У меня других нет, платформа 1С:Предприятие 8.3 (8.3.6.2332)
Так а там все равно цикл, который имитирует непрерывную работу 1С 20 сек |
|||
27
Serginio1
09.10.15
✎
11:10
|
Попробуй в default.vrd поиграться с размером пула
<pool size="50" maxAge="10" attempts="2"/> http://yellow-erp.com/page/guides/adm/service-files-description-and-location/#DEFAULTVRD |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |