Pokud session.proxies ukazuje na jeden koncový bod, ale skript používá proxy shellu, opětovné přiřazení stejného slovníku konflikt nevyřeší. Requests může sloučit nastavení proxy z prostředí s předností před výchozími hodnotami Session. Rozhodněte, zda má Session dál zjišťovat nastavení z prostředí.

Ponechte zjišťování prostředí, trasy předávejte v požadavku

Předávejte výslovné hodnoty jednotlivému volání, jak Requests doporučuje pro zamezení tohoto konfliktu mezi Session a prostředím:

proxies = {
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}

with requests.Session() as session:
    response = session.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()

Místní naslouchající bod nahraďte vlastním. Při porovnávání veřejných HTTP bodů vybírejte kandidáty ze seznamu HTTP proxy a ponechte politiku Session stejnou. To řídí předané položky mapování; vědomě rozhodněte i o dalších schématech či hostitelích aplikace. Služba, IDE, kontejner nebo vykonavatel CI může zdědit jiné prostředí než terminál.

Nechte Session spravovat vlastní nastavení

Pokud aplikace nemá zjišťovat proxy z prostředí, nastavte politiku před prvním požadavkem:

with requests.Session() as session:
    session.trust_env = False
    session.proxies = {
        "http": "http://127.0.0.1:8080",
        "https": "http://127.0.0.1:8080",
    }
    response = session.get(
        "https://example.com/",
        timeout=(5, 15),
    )
    response.raise_for_status()

trust_env=False ovlivňuje také konfiguraci certifikátů související s prostředím a automatickou autentizaci netrc. Před volbou zohledněte tyto závislosti. Pro schválený soukromý balík certifikátů CA můžete předat výslovnou cestu:

response = session.get(
    "https://example.com/",
    timeout=(5, 15),
    verify="/path/to/approved-ca-bundle.pem",
)

Použijte skutečně schválený balík a ponechte ověřování zapnuté. Pro každou politiku směrování mějte samostatnou Session místo změn jedné, zatímco ji používají jiné úlohy.

Pokud ani jedna možnost nevysvětluje trasu aplikace, porovnejte izolovanou Session s aplikací ve stejném běhovém prostředí a se stejným neškodným cílem. Zaznamenejte přítomné proxy proměnné, hodnotu trust_env a zda volání předává proxies; URL s přihlašovacími údaji nepatří do sdílených logů. Izolovaný úspěch směruje další kontrolu na vytváření Session, adaptéry, toky připravených požadavků nebo vlastní transporty. Test prostředí pomocí curl neurčí vlastní chování slučování Requests.

Související články