Многопоточный парсер на 1С #681942


#0 by adelaide
Добрый день пишу обработку для парсинга сайта, не получается реализовать многопоточность, нашел одну статью на ифостарте, но не совсем понял код приведенный там. Рассмотрим процедуру проверки списка прокси-серверов (ее тоже хочу сделать многопоточной): 1) Есть: ТЗ тзПрокси - состоит из колонок: "Сервер", "Порт", "Использовать" ПроверитьПрокси - возвращает истина если прокси рабочий и анонимный Необходимо в несколько потоков запусить процедуру проверки прокси по тзПрокси и заполнить результатами колонку "Использовать", подскажите как сие реализовать?
#1 by adelaide
#2 by Maxus43
создаёшь пул фоновых заданий, в каждом проверяешь конкретный прокси. Проблема с получением результата выполнения фоновых, погугли, описано в статьях
#3 by adelaide
вот примерно так должно быть если делать по статье... вопрос, как из фонового задания получить результат и собственно пометить его в тзПрокси?
#4 by Maxus43
#5 by adelaide
спасибо, хм, а со времен 8.1 ничего не поменялось? толко писать в базу/вызывать исключение?
#6 by Maxus43
в 8.2 не поменялось епним, а в 8.3 незнаю
#7 by adelaide
Нашел способ для 8.2 через ПоместитьВоВременноеХранилище, хотя по сути те же костыли, но можно добавить в книгу знаний:
#8 by Maxus43
да те же йайца, только сбоку
#9 by adelaide
благодарю, вроде бы все получилось... Еще бы теперь понять сколько будет кушать ресурсов каждый поток и определить их оптимальное число...
#10 by adelaide
Еще вопрос, как задать время жизни рег. заданию, чтоб оно убивалось если не успело отработать за этот промежуток времени? ИЗ СП так и не понял этом коде задания грохнутся через 20 сек или нет??:
#11 by adelaide
что-то у меня висят фоновые задания и не удаляются даже через консоль кластера :(.
#12 by romix
Внешние процессы можно запускать. А по приходу файла-результата его ловить и считывать.
#13 by Fragster
смирись
#14 by adelaide
с чем? я над этим вариантом параллельно работаю, там как свои плюсы (меньше памяти кушает, быстрей отрабатывает..) так и свои минусы есть...
#15 by Serginio1
А не проще использовать любые языки поддерживающие многопоточность и написать СОМ сервер?
#16 by adelaide
смотри
#17 by Serginio1
А в чем минусы?
#18 by Serginio1
Если тебе нужно запустить несколько потоков а потом дождаться выполнения и выдать результат то достаточно и обычного СОМ. Если нужно возвращать результат из отличного от потока приложения, тогда нужна ВК. Которая просто делается например Исходник ВК которая загружает Объект Автоматизации поддерживающий ITypeInfo и выполняет все его свойства и методы через IlanguageExtender.
#19 by adelaide
COM не больше ресурсов будет жрать чем рег. задачи?
#20 by mistеr
Надо что-то учить, кроме 1С
#21 by Serginio1
Рег задачи выполняются на сервере. Да и парсинг на 1С не сильно быстрая операция. На компилируемом языке все можно решить намного проще и быстрее. Хоть на том же C#. А почему СОМ должен жрать больше?
#22 by adelaide
переносимость решения например
#23 by adelaide
Добавил на форму обработчик ожидания который проверяет сколько времени выполняется фоновая задача и если больше указанного интервала то убивает фоновую задачу, правда уже запущенные задания не завершаются :( ни программно ни через консоль сервера, в чем может быть проблема?
#24 by Fragster
прежде, чем продолжить эксперименты, рестартани сервер 1с
#25 by adelaide
еще нельзя =)
#26 by Serginio1
А чем проблема переносимости?
#27 by adelaide
ну написал я парсер на php, работает он то быстрей, 600 потоков и памяти не много жрет, но серверная часть должна на хостинге стоять + определенные параметры сервера нужны как то cURL, ну и реализовывать обмен между скриптом на php и 1С надо + еще реализовывать оповещение о ходе выполнения парсинга.
#28 by Serginio1
Вот 600 потоков как раз и жрут ресурсы. Обычно используют пул потоков в 2 раза больше чем ядер, а то и по количеству ядер. Про опвещение как в Ты наример на C# можешь запустить потоки, дождаться их выполнения и возвратить результат. Если нужны ассинхронные сообщения то ВК
#29 by adelaide
ну в данном случае на потоки разбивается процесс получения страниц через прокси, и в парсере на пхп для запуска 600 потоков с головой хватает 200 Мб оперативной памяти и одного проца, в 1С не знаю как замерить, но думаю что надо намного больше ресурсов, но пусть даже в 30-100 потоков хочу попробовать. C# у меня на уровне лабораторок университетских, но надо будет попробовать разобраться, думаю что использовать ВК удобней чем веб-сервис на пхп.
#30 by Fragster
есть
#31 by Fragster
еще буквально вчера появился , сильно давит на диск
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С