from urllib.request import ProxyHandler, build_opener

def make_proxy_opener(proxy_uri):
    return build_opener(ProxyHandler({
        "http": proxy_uri,
        "https": proxy_uri,
    }))

opener = make_proxy_opener("http://proxy.example.net:8080")
# Use opener.open(destination, timeout=10) for this route.

Voku la propran open-metodon de ĉi tiu malfermilo kiam vojo apartenas al la provo. La HTTP-finpunkto de la ekzemplo povas veni de via servo aŭ de la HTTP-proksila listo por publikaj provoj. La fragmento ilustras posedon; ĝi ne difinas la plenan aŭtentigan aŭ sanan politikon. Tenu ajnajn kontospecifajn traktilojn ligitaj al tiu celita kliento.

urllib.request.install_opener() ŝanĝas la procezan defaŭlton uzatan de postaj urlopen()-vokoj je modula nivelo. Kontrolilo, kiu trairas proksilojn, tial povas lasi nerilatajn petojn uzi sian lastan finpunkton. Provizora instalado kaj restarigo dum purigado ankoraŭ permesas al samtempaj petoj funkcii dum la komuna ŝanĝo.

socket.setdefaulttimeout() simile ŝanĝas la defaŭltojn por poste kreitaj ingoj. Uzu la tempolimon je operacia nivelo kiam nur la provo devas ricevi ĝin.

Fermu provajn respondojn kaj tenu iliajn rezultojn specifaj: HTTP-erara respondo ne estas aŭtomate morta proksila aŭskultanto. Se sinkrona urllib-provo estas uzata en nesinkrona servo, movu blokantan laboron al taŭga laboranto; tiu plenumdecido ne igas la tutmondan malfermilan ŝanĝon izolita.

Provo devus redoni sian observon sen lasi aliam retan politikon malantaŭe. Ĝia propra klienta objekto kaj limigita operacio igas tiun limon eksplicita.

Rilataj artikoloj