Αν το session.proxies δείχνει ένα τελικό σημείο αλλά το σενάριο χρησιμοποιεί το proxy του κελύφους, η εκ νέου ανάθεση του ίδιου λεξικού δεν λύνει τη σύγκρουση. Το Requests μπορεί να συγχωνεύει ρυθμίσεις proxy του περιβάλλοντος με προτεραιότητα έναντι των προεπιλογών Session. Επιλέξτε αν η Session πρέπει να συνεχίσει να ανακαλύπτει ρυθμίσεις από το περιβάλλον.

Κρατήστε την ανακάλυψη περιβάλλοντος, δώστε διαδρομές στο αίτημα

Δώστε ρητές τιμές σε κάθε μεμονωμένη κλήση, όπως συνιστά το Requests για την αποφυγή αυτής της σύγκρουσης Session και περιβάλλοντος:

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()

Αντικαταστήστε τον τοπικό ακροατή με τον δικό σας. Αν συγκρίνετε δημόσια HTTP τελικά σημεία, επιλέξτε υποψήφια από τη λίστα HTTP proxy κρατώντας σταθερή την πολιτική Session. Αυτό ελέγχει τις δοσμένες εγγραφές αντιστοίχισης· επιλέξτε συνειδητά και για άλλα σχήματα ή υπολογιστές της εφαρμογής. Υπηρεσία, IDE, κοντέινερ ή εκτελεστής CI μπορεί να κληρονομήσει διαφορετικό περιβάλλον από το τερματικό.

Αφήστε τη Session να ελέγχει τις ρυθμίσεις της

Αν η εφαρμογή δεν πρέπει να ανακαλύπτει proxy από το περιβάλλον, ορίστε την πολιτική πριν από το πρώτο αίτημα:

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 επηρεάζει επίσης ρυθμίσεις πιστοποιητικών σχετικές με το περιβάλλον και αυτόματη ταυτοποίηση netrc. Λάβετε υπόψη αυτές τις εξαρτήσεις πριν το επιλέξετε. Για εγκεκριμένη ιδιωτική δέσμη πιστοποιητικών CA μπορείτε να δώσετε ρητή διαδρομή:

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

Χρησιμοποιήστε την πράγματι εγκεκριμένη δέσμη και διατηρήστε την επαλήθευση ενεργή. Κρατήστε ξεχωριστή Session για κάθε πολιτική δρομολόγησης αντί να αλλάζετε μία ενώ τη χρησιμοποιούν άλλες εργασίες.

Αν καμία επιλογή δεν εξηγεί τη διαδρομή της εφαρμογής, συγκρίνετε απομονωμένη Session με την εφαρμογή στο ίδιο περιβάλλον εκτέλεσης και στον ίδιο αβλαβή προορισμό. Καταγράψτε τις υπάρχουσες μεταβλητές proxy, την τιμή trust_env και αν η κλήση δίνει proxies· αποκλείστε URL με διαπιστευτήρια από κοινά αρχεία καταγραφής. Η απομονωμένη επιτυχία κατευθύνει τον επόμενο έλεγχο σε κατασκευή Session, προσαρμογείς, ροές προετοιμασμένων αιτημάτων ή προσαρμοσμένες μεταφορές. Δοκιμή περιβάλλοντος με curl δεν καθορίζει τη συμπεριφορά συγχώνευσης του ίδιου του Requests.

Σχετικά άρθρα