Параллельные вычисления для http-сервиса

0. 554 18.11.20 11:32 Сейчас в теме
Процесс, поток, нить - в различных операционных системах и языках программирования это наименьшая единица программы. В платформе существует аналог: фоновое задание. Посмотрим, как его можно использовать для распараллеливания вычислений http-сервиса.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ltfriend 617 19.11.20 19:04 Сейчас в теме
Не стоит путать понятия "процесс" и "поток".
Процесс - экземпляр программы во время выполнения, независимый объект, которому выделены системные ресурсы (например, процессорное время и память).
Потоки (Thread) существуют внутри процесса. Есть основной поток, в котором выполняется основной код приложения, а также процесс может создавать дополнительные потоки, которые выполняются параллельно. Поток использует то же самое пространства стека, что и процесс.
А "нить" - просто прямой перевод слова Thread.
Другими словами, экземпляр запущенного сервера 1С - это процесс, фоновые задания, которые создаются и выполняются на этом сервере - потоки.
VitaliyCeban; qwe322; van_za; +3 Ответить
2. NoRazum 28 03.12.20 11:40 Сейчас в теме
Увидел
"Попытка"
и большой кусок кода.
Дальше читать не стал.

Считаю эта плохим подходам.
(Хотя сама 1с очень любит так делать)
3. Lars Ulrich 554 03.12.20 15:23 Сейчас в теме
(2) Читать не призываю, но соглашусь с высказанной мыслью.
Здесь это сделано для того, чтобы не перегружать код проверкой входных данных. Тут ведь как: будешь смотреть на льва не увидишь золота, будешь смотреть на золото не увидишь льва.
4. NoRazum 28 03.12.20 17:40 Сейчас в теме
(3) Лев то хорош, Из-за этого поставил ПЛЮС.
Lars Ulrich; +1 Ответить
5. artbear 1206 03.12.20 19:02 Сейчас в теме
(0) Интересная публикация, спасибо!

одно но
Никогда так не пишите код обработки исключения
Исключение
        ОписаниеОшибки = ОписаниеОшибки();
        ЗаписьЖурналаРегистрации(ИмяСобытияЖурнала(), УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки);
КонецПопытки;

Так вы маскируете стек вызовов от администраторов, используйте подробное представление ошибки.
Стандарт 1С так и рекомендует.

подобная неточная обработка исключений - одна из самых частых ошибок\неточностей разработчиков.
очень часто наблюдаю такой код.
Lars Ulrich; +1 Ответить
9. saa@kuzov.org 06.12.20 04:39 Сейчас в теме
(5) покажите, пожалуйста, пример кода. Потому что вот вроде слова знакомые, а общий смысл ускользает...
10. Lars Ulrich 554 08.12.20 10:51 Сейчас в теме
(9) имеется ввиду, что следует использовать подробное представление исключения.
Пример из синтаксис-помощника:
Попытка
    ...
Исключение
    Инфо = ИнформацияОбОшибке();
    Сообщить(НСтр("ru='Описание=';en='Description='") + Инфо.Описание + "'");
    Сообщить(НСтр("ru='ИмяМодуля=';en='ModuleName='") + Инфо.ИмяМодуля + "'");
    Сообщить(НСтр("ru='НомерСтроки=';en='LineNumber='") + Инфо.НомерСтроки + "'");
    Сообщить(НСтр("ru='ИсходнаяСтрока=';en='SourceLine='") + Инфо.ИсходнаяСтрока + "'");
КонецПопытки;
Показать


Источник для ознакомления: https://its.1c.ru/db/v8std/content/499/hdoc
saa@kuzov.org; +1 Ответить
11. artbear 1206 10.12.20 13:49 Сейчас в теме
(10) Да, спасибо за ссылку на стандарт.

Но пример кода из СП так себе (
вот как раз такое описание не нужно, а нужно как по ссылке на стандарт
6. artbear 1206 03.12.20 19:08 Сейчас в теме
(0) Ну и вообще при работе с фоновыми заданиями нужно помнить, что они могут быть прекращены в любой момент и могут не доработать до конца.
поэтому приходится использовать спец.обработку состояний фоновых заданий.

я для работы с фоновыми заданиями с гарантированным выполнением и гибкой настройкой много лет использую подсистему Менеджер Заданий моего товарища, Евгения Павлюка.
в ней многие проблемы работы с ФЗ решены.

Исходники есть на гитхабе, есть хорошая статья на habr-е
- https://github.com/wizi4d/TaskManagerFor1C
- https://habr.com/ru/post/255387/

Рекомендую.
Lars Ulrich; +1 Ответить
7. artbear 1206 03.12.20 19:13 Сейчас в теме
(0) А почему юзаете возврат значений из ФЗ через СообщенияПользователю?
почему не штатный механизм 1С через временное хранилище, как написано в документации https://its.1c.ru/db/v8312doc#bookmark:dev:TI000000819

все-таки ненужная\излишня сериализация\десереализация
8. Lars Ulrich 554 04.12.20 12:06 Сейчас в теме
(7) можно и через механизм временного хранилища, будет побыстрее работать. соглашусь, что следовало бы в примере его использовать. Через СообщенияПользователю в текущей практике часто используется трансляция состояния исполнения фоновых заданий, как-то сходу его и задействовал.
user1503726; +1 Ответить
Оставьте свое сообщение
Вопросы с вознаграждением