Για μια εργασία Cloud Composer που χρειάζεται ένα εξερχόμενο αίτημα HTTP μέσω proxy, ρυθμίστε τον HTTP client μέσα στο callable της εργασίας:

def fetch_status():
    import requests

    with requests.Session() as session:
        session.trust_env = False
        with session.get(
            'https://api.example/health',
            proxies={'https': 'http://proxy.example:8080'},
            timeout=(5, 30),
        ) as response:
            response.raise_for_status()
            return response.status_code

Χρησιμοποιήστε αυτό το callable μέσω της υπάρχουσας διάταξης εργασιών του DAG. Το proxy πρέπει να είναι προσβάσιμο από τον worker που την εκτελεί. Για επιτρεπόμενες κλήσεις δημόσιου API χωρίς έλεγχο ταυτότητας proxy, η λίστα proxy HTTP παρέχει υποψηφίους για τη διεύθυνση URL proxy HTTP της συνεδρίας. Διατηρήστε μια πιστοποιημένη διεύθυνση URL ή άλλη ρύθμιση λογαριασμού στην πηγή μυστικών που προορίζεται για την ανάπτυξη.

Το Session και η απόκριση κλείνουν όταν τερματίζει η συνάρτηση. Το trust_env=False απενεργοποιεί την ενσωμάτωση του Requests με το περιβάλλον, εμποδίζοντας κληρονομημένες ρυθμίσεις proxy να αντικαταστήσουν την επιδιωκόμενη συμπεριφορά αυτού του client, και επίσης απενεργοποιεί την επιλογή CA bundle του Requests με βάση το περιβάλλον. Δώστε το επιδιωκόμενο CA bundle μέσω της επιλογής verify αυτού του client, εάν χρειάζεται.

Οι μεταβλητές περιβάλλοντος που έχουν ρυθμιστεί για ένα διαχειριζόμενο περιβάλλον Airflow έχουν ευρύτερο πεδίο και περιορισμούς που ορίζει η πλατφόρμα. Η μετάδοση της διαδρομής σε αυτό το Session κρατά την απόφαση συνδεδεμένη με τη λειτουργία HTTP αυτής της εργασίας, χωρίς να αλλάζει το os.environ για άλλον κώδικα στη διεργασία worker.

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