• Какой способ парсинга выбрать?

    Ichi
    @Ichi
    Увлекаюсь программированием
    Тут вариант - перейти на очереди. При чем без разницы, на каком языке будут крутится воркеры.
    Например, надо проверить ссылки, кидаем в очередь все ссылки. Очередь можно использовать любую - Redis, Gearman, YandexMQ, RabbitMQ. Последний я тестил с 10к записями, но многие пишут, что с 1м медленно работает. По идее Яндекс должен нормально справляться с такими нагрузками. Ну а Редис и Гирман довольно легко переваривают по 100к записей
    Я рекомендовал бы использовать Redis. И очень сильно не рекомендую использовать Mysql для этого.

    А дальше просто воркеры выполняют задачу и записывают результат. Ну или кидают в другую очередь. Воркеры можно писать на любом языке. Это довольно большой плюс. Также их можно размещать на разных серверах. Можно запустить несколько воркеров на php и несколько на python. И проверить их скорость.

    Работу воркеров можно через Supervisor контролировать - автозапуск, рестарт и количество запущенных воркеров.

    Зачем кидать результат в другую очередь? Чтобы избежать кучи одновременных коннектов к базе. Просто один-два воркера собирают результаты и записывают в базу.

    Ну и первые воркеры будут выполнять определенную задачу и будут работать с очередями. То есть, взял задание, выполнил и кинул результат. На Python подобный скрипт будет потреблять памяти 5-15Мб. Можно около сотни воркеров на слабой vds запустить.
    Ответ написан
    Комментировать