O crawler tem requisições simultâneas suficientes configuradas. Ainda assim ele pausa sempre que pede outro endereço ao pool de proxies. Adicionar mais proxies não mexe nessa pausa.

Um padrão comum de middleware chama requests.get(pool_url) dentro de process_request(). Trata-se de uma operação de rede síncrona num caminho que deveria cooperar com o motor assíncrono do Scrapy. Enquanto a chamada espera, ela pode reter trabalho não relacionado na mesma thread do loop de eventos.

Há duas requisições no trabalho

Uma requisição obtém um endpoint do serviço de pool. A outra usa esse endpoint para contatar o destino. Meça e reporte as duas separadamente. Uma API de pool lenta pode fazer cada proxy selecionado parecer lento antes mesmo de a aplicação se conectar a ele.

Use uma integração de descoberta assíncrona compatível com a versão do Scrapy instalada, ou obtenha e atualize um conjunto local limitado de endpoints fora do caminho crítico de cada requisição. Se o trabalho bloqueante precisar ser deslocado, dê a esse executor os seus próprios limites e tratamento de timeouts; uma fila ilimitada apenas muda o atraso de lugar.

Não emita automaticamente outra chamada de descoberta para cada requisição. Um cache de curta duração ou um lote arrendado pode reduzir a dependência do serviço de pool, desde que a sua vida útil se ajuste à política real de endpoints do serviço.

Defina o que significa uma consulta falhada

Uma resposta vazia ou falhada do pool não deve remover silenciosamente os metadados do proxy e permitir uma requisição direta. Escolha um resultado explícito: esperar dentro do orçamento da tarefa, falhar, ou usar um endpoint em cache aprovado.

Mantenha também livre a rota própria da API do pool. Se for um serviço interno, enviar o seu hostname privado através do próprio proxy que ajuda a selecioná-lo pode criar uma dependência circular.

Quando a descoberta funcionar sem bloquear trabalho não relacionado, examine a transação normal de proxy. São reparações separadas, e o seu tempo merece campos separados no registo.

Artigos relacionados