El rastrejador té prou sol·licituds concurrents configurades. Tot i així s'atura sempre que demana una altra adreça al pool de proxys. Afegir més proxys no toca aquesta aturada.

Un patró habitual de middleware crida requests.get(pool_url) dins de process_request(). És una operació de xarxa síncrona en un camí que hauria de cooperar amb el motor asíncron de Scrapy. Mentre la crida espera, pot retenir feina no relacionada al mateix fil del bucle d'esdeveniments.

Hi ha dues sol·licituds a la feina

Una sol·licitud obté un endpoint del servei del pool. L'altra utilitza aquest endpoint per contactar amb la destinació. Mesureu-les i informeu-ne per separat. Una API de pool lenta pot fer que cada proxy seleccionat sembli lent abans que l'aplicació s'hi hagi connectat.

Feu servir una integració de descoberta asíncrona compatible amb la versió instal·lada de Scrapy, o obteniu i refresqueu un conjunt limitat d'endpoints locals fora del camí crític de cada sol·licitud. Si la feina bloquejant s'ha de descarregar, doneu a aquest executor els seus propis límits i gestió de temps d'espera; una cua il·limitada només trasllada el retard.

No emeteu automàticament una altra crida de descoberta per a cada sol·licitud. Una memòria cau de curta durada o un lot arrendat poden reduir la dependència del servei del pool, sempre que la seva vida útil encaixi amb la política real d'endpoints del servei.

Definiu què significa una consulta fallida

Una resposta buida o fallida del pool no hauria de treure silenciosament les metadades del proxy i permetre una sol·licitud directa. Trieu un resultat explícit: esperar dins del pressupost de la tasca, fallar o utilitzar un endpoint en memòria cau aprovat.

Manteniu també neta la ruta pròpia de l'API del pool. Si és un servei intern, enviar el seu nom d'amfitrió privat a través del mateix proxy que ajuda a seleccionar pot crear una dependència circular.

Un cop la descoberta funcioni sense bloquejar feina no relacionada, examineu la transacció normal de proxy. Són reparacions separades i la seva temporització mereix camps separats al registre.

Articles relacionats