Za malu urllib3 proxy dijagnostiku koristite ProxyManager sa isključenim ponovnim pokušajima. Tako se prijavljuje prvi pokušaj umesto dužeg ponavljanja unosa koji više ne radi. U projektu kojim upravlja uv:

uv add urllib3

Zamenite dokumentacijsku krajnju tačku HTTP proxyjem iz svoje usluge ili liste HTTP proxyja i pošaljite zahtev kroz taj menadžer:

import urllib3

proxy = urllib3.ProxyManager(
    "http://203.0.113.10:8080",
    timeout=urllib3.Timeout(connect=5, read=10),
    retries=False,
)

try:
    response = proxy.request("GET", "https://example.com/")
    print(response.status)
    print(response.data.decode("utf-8", errors="replace")[:200])
finally:
    proxy.clear()

Prvo pročitajte response.status, pa pregledajte response.data. To su urllib3 polja; status_code i text iz Requests stila nisu zamene. Odbijanje sajta može stići kroz funkcionalan proxy. Izuzetak pre odgovora, nasuprot tome, označava neuspeh dovršavanja zahteva.

retries=False je dijagnostički izbor, a ne politika ponovnih pokušaja u produkciji. Postavke povezivanja od 5 i čitanja od 10 sekundi ograničavaju svoje faze; ne sabiraju se u garantovan ukupni rok od 15 sekundi. DNS i napredovanje odgovora mogu uticati na ukupno čekanje.

Primer unapred učitava telo i na kraju prazni menadžerove skupove veza. Za ponovljene zahteve kroz istu krajnju tačku zadržite menadžer do kraja posla radi ponovne upotrebe veza. Prelazak na preload_content=False menja životni ciklus: pozivalac mora pročitati i osloboditi odgovor u toku.

Izaberite menadžer prema usluzi koja sluša. Obični PoolManager ne postaje proxy menadžer zato što je URL sačuvan drugde; SOCKS koristi urllib3.contrib.socks.SOCKSProxyManager i njegove opcione zavisnosti. Gornji kod prati HTTP ProxyManager put.

Povezani članci