Проблема с памятью при использовании сканирования Apify Puppeteer - PullRequest
0 голосов
/ 18 апреля 2020

Я работал над проектом Python, в котором пользователи предоставляют длинный список URL-адресов программы (скажем, 100 URL-адресов), и программа вызовет 100 процессов для выполнения кода JavaScript, который содержит сканер код (используя Apify.launchPuppeteer()). Более того, код JavaScript создается и модифицируется на основе шаблона одностраничной страницы Apify Puppeteer.

Однако одновременный вызов кода обхода 100 процессами занимает много памяти, что приводит к отставанию. Поскольку код Python ожидает чтения результата из файла, который записан кодом JavaScript, недостаток памяти значительно влияет на производительность и вызывает ошибки при записи файла. Мне было интересно, есть ли способы оптимизации кода сканера JavaScript, или есть какие-либо улучшения, которые можно сделать с обеих сторон?

Некоторые правки --- Дополнительная информация о программе: пользователь дает список URL-адресов (доменов), и программа хочет сканировать все ссылки в домене (например, сканировать все гиперссылки одного домена github.com), рекурсивно.

1 Ответ

0 голосов
/ 18 апреля 2020

Запуск 100 отдельных процессов сканирования совершенно не требуется. Apify предоставляет классы искателя, которые могут очищать список или очередь, заполненную URL-адресами. Они также управляют параллелизмом, поэтому выполнение остается в пределах ЦП и памяти. Мы обычно очищаем миллионы URL-адресов без значительных проблем с памятью или процессором. Я бы использовал PuppeteerCrawler .

...