@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Чекер. Перечек аккаунтов попавших в error
-
я делал так если была ошибка то дабавляю аккаунт назад в ресурс то бишь когда следующий поток начинает работу он этот аккаунт начинает юзать по новой так же и с проксями в ресурсе должны настройки стоять использовать строку только один раз
можешь глобальную переменую установить и там считывать сколько нужно ошибочных проверять чтобы до бесконечности скрипт негонялся
чекер лучше на post get запросах пиши быстрее будет и удобнее -
@Eva .можно без else. Используй "Спать" перед "Проверить существование", Чтоб успела страница загрузиться
-
@denanotherday а лучше юзать ждать появления элемента так более эфективнее в цикле сделать с сном по одной секунде
-
@Басодрот увы, с post \ get запросами данный сайт работает очень плохо. по просту клоудфлаер блочит запросы. если есть решение то конечно же я буду лапатить в сторону реквестов и пост запросов. И, можно готовый код добавления в рессурсы аккаунта? Не понимаю как сделать такое.
-
@Eva

тоесть другие потоки будут работаь с этой прокси тоже так можно и с аккаунтами и т.д
там можно в настройках ресурса настроить еще сколько ошибок и успешных выполнений
мне например так удобно как на скрине так как я в проекте могу управлять ресурсами в зависимости с динамичекой логикой
на скрине фишка такая если гугл незагрузился прокси из ресурса неудаляеться ее потом другие оптоки подхватят вдруг она будет рабоать и получаеться так что ресурсы незаканчиваються и скрипт шпарит дальше после дабавления элемента можно завершать поток поток успешным выполнением ну если у тебя настроено успешных 999999 а неудач 1 другие потоки будут повторно работать с этими данными которые ты назд в ресурс закидываешь
для меня лично такой подход хороший очень быстро все шерстит и все ошибки обрабатываються повторно и в зависимости движухи счетчики выстраивают логику в скрипте кому и сколько раз когда и куда. -
Так, понимаю. Спасибо огромное за ответы. Еще вопрос в догонку, так вот получается если например поток завершился с ошибкой (не удалось загрузить страницу) то аккаунт который был использован в потоке, будет отложен, и потом по новой использован с новым прокси, верно? или от чего это зависит?
-
@Eva
да верно понимаешь можно создать ресурс где будет аккаунт:прокси и парсить строку и акк будет пробывать с той же проксей которая отвалилась/ выдала ошибку
на скрине где прокси ты можешь и аккаунты назад кидать в ресурс так же можешь объеденять с проксей либо необъеденять и акк будет разные прокси брать из ресурса всегда
на моем скриен только прокси закидываеться назад тебе еще и аккаунты нужно назад закидывать
у тебя получиться логика такая что все ошибочные акки будут пробывать залогиниться каждый рах под разными проксями и когда он залогиниться нормально то он у тебя из ресурса исчезнет и небудет повторно проверяться ну и ты в скрипте его сопроводишь до записи в фаил как гуд. В все ошибочные будут опять дрочиться сколько тебе нужно если счетчик непоставишь будет дрочиться вечно.то есть акк выдал ошибку, установил в счетчик, что мол ошибка была и если этот акк сделал 10 ошибок, то недобовляешь его в ресурс а то будет бесконечно чекаться.
-
@Eva вы можете аккаунты использовать только один раз (или несколько), если я правильно понял.
-
@denanotherday said in Чекер. Перечек аккаунтов попавших в error:
@Eva вы можете аккаунты использовать только один раз (или несколько), если я правильно понял.
И с прокси тоже.
-
@denanotherday
если их назад незашвыривать то да только один раз при условии что в напстройках ресурсов стоит количество использования 1