នៅពេលគម្រោងរបស់អ្នកមាន Requests សូមបញ្ជូន mapping របស់ proxy ទៅឱ្យការហៅ៖

import requests

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

response = requests.get(
    "https://example.com/",
    proxies=proxies,
    timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)

ជំនួស endpoint loopback ដោយ proxy ដែលកំពុងដំណើរការរបស់អ្នក ឬបេក្ខភាពពីបញ្ជី HTTP proxy ដែលអ្នកនឹងសាកល្បងតាមសំណើនេះ។ key បញ្ជាក់ scheme របស់គោលដៅ៖ http សម្រាប់ URL ប្រភេទ HTTP និង https សម្រាប់ URL ប្រភេទ HTTPS។ value បញ្ជាក់ listener របស់ proxy។ endpoint ទាំងនេះអាចខុសគ្នា ប្រសិនបើបណ្តាញរបស់អ្នកត្រូវការផ្លូវដាច់ដោយឡែក។

ការដាក់ value របស់ proxy ជា http:// នៅក្រោម key https គឺដោយចេតនា។ Requests ស្នើសុំរូង CONNECT ពី HTTP listener រួចបង្កើត TLS ទៅគោលដៅតាមរូងនោះ ដោយអនុលោមតាមគោលការណ៍គោលដៅ និង port របស់ proxy។ ការប្តូរ value ទៅជា https:// គឺស្នើសុំTLS ទៅកាន់ proxy ផ្ទាល់ ហើយអាចបរាជ័យ ប្រសិនបើ listener រំពឹង HTTP ដែលមិនបានអ៊ិនគ្រីប។

អត្ថន័យនៃលេខ timeout ទាំងពីរ

timeout=(5, 15) កំណត់ timeout សម្រាប់ការភ្ជាប់ និងការអាន។ វាមិនកំណត់ពេលសរុបត្រឹមដប់ប្រាំវិនាទីទេ។ ទិន្នន័យដែលចូលមកជាបន្តបន្ទាប់តាមចន្លោះពេល អាសយដ្ឋានច្រើន និងការព្យាយាមភ្ជាប់ អាចធ្វើឱ្យពេលវេលាកន្លងទៅវែងជាងនេះ។ Requests មិនផ្តល់ timeout ទូទៅទេ នៅពេលអ្នកមិនកំណត់វា ដូច្នេះសូមជ្រើសរើសដែនកំណត់ដែលសមនឹងការឆ្លើយតប ហើយបន្ថែមកាលកំណត់នៅកម្រិតកម្មវិធី ប្រសិនបើការងារត្រូវការដែនកំណត់ពេលសរុបដ៏តឹងរ៉ឹង។

ដោះស្រាយបរាជ័យនៅដំណាក់កាលដែលវាកើតឡើង

try:
    response = requests.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()
except requests.exceptions.ProxyError as error:
    print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
    print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
    print("HTTP status:", error.response.status_code)

CONNECT ដែលត្រូវបានបដិសេធអាចបង្កើត ProxyError មុនពេលមានការឆ្លើយតបពីគោលដៅ។ សាខា HTTPError កើតក្រោយពេលទទួលការឆ្លើយតបដែលមានស្ថានភាពកំហុស ហើយ Timeout មានន័យថាដែនកំណត់ដែលបានកំណត់បានផុត។ ពិនិត្យខ្សែសង្វាក់ exception ក្នុងពេលរៀបចំការភ្ជាប់នៅមូលដ្ឋាន ហើយលុប endpoint ដែលមានព័ត៌មានចូលប្រើ និង URL ឯកជន មុនពេលចែករំលែក។

រក្សាការផ្ទៀងផ្ទាត់វិញ្ញាបនបត្រឱ្យដំណើរការ។ ប្រសិនបើបណ្តាញដែលបានអនុញ្ញាតប្រើ CA ឯកជន ឬការស្ទាក់ចាប់ដែលគ្រប់គ្រង សូមផ្តល់សម្ភារៈទំនុកចិត្តដែលគេរំពឹង ជំនួសឱ្យការបិទការផ្ទៀងផ្ទាត់។

ធាតុដែលកំណត់ច្បាស់សម្រាប់សំណើនីមួយៗគ្រប់គ្រងផ្លូវដែលបានផ្តល់នៅទីនេះ ប៉ុន្តែ scheme ដែលមិនបានបញ្ជាក់នៅតែអាចរងឥទ្ធិពលពីការរកឃើញ proxy ក្នុង environment។ នៅពេលផ្លាស់ការហៅទៅ Session ដែលអាចប្រើឡើងវិញ សូមសម្រេចថាតើ environment variable តម្លៃលំនាំដើមរបស់ Session និងការកំណត់ជំនួសសម្រាប់សំណើនីមួយៗគួរទាក់ទងគ្នាយ៉ាងដូចម្តេច។ ការប្រើការភ្ជាប់ឡើងវិញ និងគោលការណ៍កំណត់ផ្លូវ ជាជម្រើសដាច់ដោយឡែក។

អត្ថបទពាក់ព័ន្ធ