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

В ответ сервер али редиректит на последнюю или на 100 страницу(смотря что меньше).@senerg said in LOCK в многопотоке:
Вы про скорость парсинга не знаете? Думаю 1000 в секунду не стоит, а то обвинят в ддос атаке)
Али выдержит и 1кк запросов в секунду без проблем. Если будет блок по ip - добавьте прокси.
А вообще, беспокойство за бан чуток противоречит политике разработки многопоточных скриптов =) -
@xclsv said in LOCK в многопотоке:
Али выдержит и 1кк запросов в секунду без проблем. Если будет блок по ip - добавьте прокси.
А вообще, беспокойство за бан чуток противоречит политике разработки многопоточных скриптов =)Нет, не противоречит, просто интересуюсь как на практике дела. Думаю, что качать с них 100 мегабит будет палевно, даже если прокси постоянно менять. Хочу какой-то средний вариант подобрать, чтобы по нагрузке для них было не заметно.
-
@xclsv said in LOCK в многопотоке:
В ответ сервер али редиректит на последнюю или на 100 страницу(смотря что меньше).
Во время редиректа с введенной страницей номер 999 проходит вот такой запрос:
https://gj.mmstat.com/ae.pc_click.statweb_ae_click?gmkey=&gokey=ae_project_id%3D15218%26ae_page_type%3Dlist%26ae_page_area%3Dlist%26ae_button_type%3Dpage_go%26ae_object_type%3Dpage_num%26ae_object_value%3D999%26ae_ismember%3Dfalse%26ae_user_id%3D11.139.3.106.1542308148948.206313.4%26ae_click_behavior%3Dleft%26st_page_id%3Dn690ff97kt0cau3e16718bffe4721b6af70910a2df%26ali_apache_track%3D-%26jsver%3Daplus_std%26lver%3D8.7.2%26pver%3D0.4.10%26cache%3Dc3d53e6%26_slog%3D0&cna=N690FF97kT0CAU3eZX8xNubH&spm-cnt=2114.search0104.0.0.4deb3eadGK29lt&logtype=2А после него уже как-то высчитывает, что страниц в данном случае всего две и отправляет второй запрос сюда:
https://www.aliexpress.com/wholesale?isrefine=y&site=glo&g=y&SortType=total_tranpro_desc&SearchText=dress&page=2&CatId=200003482&initiative_id=SB_20181115110022&needQuery=n&pvId=10-100019007,5-100014064,14-173,200000329-200001248,200000446-200001484,100004669-100006419Честно говоря, у меня пока не достаточно знаний чтобы его повторить.
-
@senerg said in LOCK в многопотоке:
Честно говоря, у меня пока не достаточно знаний чтобы его повторить
Его нет необходимости повторять
Выполните запрос к 999 странице и оставьте галочку "следовать переадресациям". В ответ должен прийти код последней страницы. -
@xclsv said in LOCK в многопотоке:
Выполните запрос к 999 странице и оставьте галочку "следовать переадресациям"
Показывает несуществующую страницу.
https://www.aliexpress.com/wholesale?isrefine=y&site=glo&g=y&SortType=total_tranpro_desc&SearchText=dress&page=999&CatId=200003482&initiative_id=SB_20181115110022&needQuery=n&pvId=10-100019007,5-100014064,14-173,200000329-200001248,200000446-200001484,100004669-100006419 -
@senerg said in LOCK в многопотоке:
@xclsv said in LOCK в многопотоке:
Выполните запрос к 999 странице и оставьте галочку "следовать переадресациям"
Показывает несуществующую страницу.
https://www.aliexpress.com/wholesale?isrefine=y&site=glo&g=y&SortType=total_tranpro_desc&SearchText=dress&page=999&CatId=200003482&initiative_id=SB_20181115110022&needQuery=n&pvId=10-100019007,5-100014064,14-173,200000329-200001248,200000446-200001484,100004669-100006419Вообще, там другой запрос надо делать. Но я попробовал и фокус не проканал. Для определения переадресации выполняется какой-то скрипт, имя которого хранится в атрибуте кнопки ОК.
Что ж. Я был не прав. Может Вам хотя бы будет полезной информация о том, что больше 100 страниц али не отдает. Не знаю, решили ли Вы свою задачу или нет, но зная это, в большинстве случаев максимальное количество страниц можно найти всего в несколько запросов методом бисекции.
-
@senerg said in LOCK в многопотоке:
@xclsv said in LOCK в многопотоке:
Для определения переадресации выполняется какой-то скрипт, имя которого хранится в атрибуте кнопки ОК.
Как разгадать какой скрипт получает последнюю страницу вы тоже не знаете?
Пока недостаточно знаний для этого. Какой именно скрипт понятно. Вроде бы должно быть достаточно его выполнить, но у меня так и не получилось.