API::Server::Redis выводит обработку парсером одиночных запросов на новый уровень: в качестве сервера запросов и результатов выступает Redis возможность запрашивать результаты асинхронно или в блокирующем режиме возможность подключить множество парсеров(как на одном так и на разных серверах) для обработки запросов с единой точкой входа возможность задасть количество потоков для обработки запросов и просматривать логи работы Для запуска необходимо: установить модуль async-redis запустить сервер redis, проверить настройки парсера API::Server::Redis добавить задание с парсером API::Server::Redis, в качестве запросов можно подать {num:1:N}, где N должно соответствовать числу потоков Выполнение запросов: Каждый запрос состоит из массива [queryId, parser, preset, query, overrideOpts, apiOpts] parser, preset, query соответствует аналогичным для API запроса oneRequest(https://a-parser.com/wiki/user-api/#onerequest) queryId - формируется вместе с запросом, рекомендуем использовать порядковый номер из вашей базы или хороший рандом, по данному ID можно будет получить результат overrideOpts - переопределние настроек для парсера apiOpts - дополнительные параметры обработки API Пример выполнения запросов, для тестирования можно использовать redis-cli: Код: 127.0.0.1:6379> lpush aparser_redis_api '["some_unique_id", "Net::HTTP", "default", "https://ya.ru"]' (integer) 1 127.0.0.1:6379> blpop aparser_redis_api:some_unique_id 0 1) "aparser_redis_api:some_unique_id" 2) "{\"data\":\"<!DOCTYPE html><html..... Различные кейсы: асинхронная проверка наличия результата: lpop aparser_redis_api:some_unique_id блокирующее получение результата: blpop aparser_redis_api:some_unique_id 0, где 0 - таймаут операции сохранение результатов в единую очередь(LIST в терминах Redis): Код: 127.0.0.1:6379> lpush aparser_redis_api '["some_unique_id", "Net::HTTP", "default", "https://ya.ru", {}, {"output_queue": "aparser_results"}]' (integer) 1 127.0.0.1:6379> blpop aparser_results 0 1) "aparser_results" 2) "{\"queryId\":\"some_unique_id\",\"results\":{\"data\":\"<!DOCTYPE html><html class=... P.S: Работа API поверх Redis имеет огромные преимущества в сравнении с HTTP API: Нулевые задержки Шардинг запросов на множество парсеров Таймауты операций Автоматический expire результатов Активно используем у себя в https://spyserp.com/
а можно список apiOpts? и пример overrideOpts для переопределения Result Format и с использованием прокси принудительным пожалуйста. почему-то у меня данный способ отрабатывает при использовании SE::Google::Modern, Bing, но при этом инорирует записанные Result Format в парсерах и судя по всему не хочет использовать прокси, хотя галочка в выбранных парсерах стоит, и в обычном режиме, не через редис - все отрабатывает хорошо и с нужным Result Format
в данном случае этап форматирования пропускается, т.к. весь результат передается в виде JSON для дальнейшей программной обработки прокси используются согласно настроек пресета, в этом можно убедиться включив логи для API::Server::Redis, переопределять можно так: Код: lpush aparser_redis_api '["1", "Net::HTTP", "default", "https://ifconfig.me/ip", {"useproxy": 0}]'
Спасибо! А то я насчет форматирования весь мозг сломал, переделаю тогда на клиенте) а по проксям - я думал их настройки берутся не из настроек api::redis а из настроей самих парсеров поставил в настройках API::Redis - прокси подхватились