Python Requests-এর Session প্রক্সি ও পরিবেশের অগ্রাধিকার
session.proxies, পরিবেশ চলক, অনুরোধভিত্তিক বিকল্প ও trust_env একসঙ্গে থাকলে Python Requests-এর রাউটিং পূর্বানুমানযোগ্য করুন।
session.proxies এক এন্ডপয়েন্ট দেখালেও স্ক্রিপ্ট shell-এর প্রক্সি ব্যবহার করলে একই ডিকশনারি আবার বরাদ্দ করলে দ্বন্দ্ব মিটবে না। Requests পরিবেশের প্রক্সি সেটিংকে Session-এর ডিফল্টের ওপর অগ্রাধিকার দিয়ে মেলাতে পারে। Session পরিবেশ থেকে সেটিং খুঁজতে থাকবে কি না ঠিক করুন।
পরিবেশ অনুসন্ধান রাখুন, অনুরোধে পথ দিন
এই Session/পরিবেশ দ্বন্দ্ব এড়াতে Requests-এর সুপারিশমতো প্রতিটি কলে স্পষ্ট মান দিন:
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 এন্ডপয়েন্ট তুলনার সময় Session নীতি স্থির রেখে HTTP প্রক্সির তালিকা থেকে প্রার্থী নিন। এটি দেওয়া ম্যাপিংয়ের এন্ট্রি নিয়ন্ত্রণ করে; অ্যাপের অন্য স্কিম বা হোস্টের জন্যও সচেতন সিদ্ধান্ত নিন। সার্ভিস, IDE, কনটেইনার বা CI রানার টার্মিনাল থেকে আলাদা পরিবেশ পেতে পারে।
Session-কে নিজের সেটিং নিয়ন্ত্রণ করতে দিন
অ্যাপ পরিবেশ থেকে প্রক্সি না খুঁজলে প্রথম অনুরোধের আগেই নীতি স্থির করুন:
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 রাখুন।
কোনো বিকল্প অ্যাপের পথ ব্যাখ্যা না করলে একই রানটাইম ও নিরীহ গন্তব্যে বিচ্ছিন্ন Session-এর সঙ্গে অ্যাপের তুলনা করুন। কোন প্রক্সি চলক আছে, trust_env-এর মান এবং কলে proxies দেওয়া হয় কি না লিখুন; পরিচয়তথ্যসহ URL ভাগ করা লগে রাখবেন না। বিচ্ছিন্ন সাফল্য পরের পরীক্ষাকে Session তৈরি, অ্যাডাপ্টার, প্রস্তুত অনুরোধের প্রবাহ বা নিজস্ব ট্রান্সপোর্টের দিকে নিয়ে যায়। curl-এর পরিবেশ পরীক্ষা Requests-এর নিজস্ব মার্জ আচরণ নির্ধারণ করে না।