urllib3 থ্রেড-নিরাপদ সংযোগ পুলিং এবং ফাইল পোস্ট সমর্থন সঙ্গে একটি পাইথন HTTP- র লাইব্রেরি.
হাইলাইট করুন:
& Nbsp; * একাধিক অনুরোধ জন্য একই সকেট সংযোগ পুনরায় ব্যবহার (HTTPConnectionPool)
& Nbsp; * ফাইল পোস্ট (encode_multipart_formdata)
& Nbsp; * অন্তর্নির্মিত ফেরৎ ও retries (ঐচ্ছিক)
& Nbsp; * থ্রেড-নিরাপদ
urllib এবং urllib2 সঙ্গে ভুল কি?
পুনরায় ব্যবহার / পুলিং এবং ফাইল পোস্ট সংযোগ: পাইথন স্ট্যান্ডার্ড লাইব্রেরী থেকে অনুপস্থিত দুই সমালোচনামূলক বৈশিষ্ট্য আছে. এটা এই নিজেকে বাস্তবায়ন ভয়ঙ্কর কঠিন না, কিন্তু এটা আপনার জন্য ইতিমধ্যে কাজ করেনি যে একটি মডিউল ব্যবহার করা অনেক সহজ.
পাইথন স্ট্যান্ডার্ড লাইব্রেরী urllib এবং urllib2 একে অপরের সাথে সামান্য আছে. তারা একে সমস্যার একটি ভিন্ন সুযোগ সমাধান, স্বাধীন ও স্বতন্ত্র হতে পরিকল্পিত, এবং urllib3 একটি অনুরূপ শিরা মধ্যে অনুসরণ করা হয়.
কেন আমি সংযোগ পুনরায় ব্যবহার করতে চান?
পারফরমেন্স. আপনি সাধারণত একটি urllib কল করতে হলে, একটি পৃথক সকেট সংযোগ প্রতিটি অনুরোধ সঙ্গে তৈরি করা হয়. (HTTP- র 1.1 থেকে সমর্থিত) বিদ্যমান সকেট পুনঃব্যবহার করে, অনুরোধ সার্ভারের প্রান্তে কম সম্পদ গ্রহণ করা, এবং এছাড়াও ক্লায়েন্ট এর শেষে একটি দ্রুত প্রতিক্রিয়া সময় প্রদান করবে. (15 সংযোগ ব্যবহার করে) সাধারণ urllib ব্যবহার না করে (1 সংযোগ ব্যবহার করে) HTTPConnectionPool ব্যবহার করে যখন কিছু সহজ benchmarks (পরীক্ষা / benchmark.py দেখুন) সঙ্গে, google.com থেকে 15 URL গুলি ডাউনলোড করার বিষয়ে দুইবার হিসাবে দ্রুত.
গ্রন্থাগারের এই জন্য নিখুঁত:
& Nbsp; * একটি API টকিং
& Nbsp; * একটি ওয়েবসাইট ক্রলিং
& Nbsp; *, ফাইল পোস্ট ফেরৎ সব ব্যবস্থা করতে সক্ষম হচ্ছে, এবং পুনরায় চেষ্টা করছে যেখানে কোনো পরিস্থিতির দরকারী. এটা অপেক্ষাকৃত হালকা, তাই এটা কিছু জন্য ব্যবহার করা যেতে পারে!
উদাহরণ:
আরো চমৎকার সিনট্যাক্স হাইলাইট উদাহরণ জন্য উদাহরণ উইকি যান.
কিন্তু, দীর্ঘ সংক্ষিপ্ত বিবরণ:
urllib3 আমদানি থেকে HTTPConnectionPool
API_URL = 'http://ajax.googleapis.com/ajax/services/search/web'
http_pool = HTTPConnectionPool.from_url (API_URL)
ক্ষেত্র = {'বনাম': '1.0', 'ফ': 'urllib3'}
আর = http_pool.get_url (API_URL, ক্ষেত্র)
মুদ্রণ r.status, r.data p>
এই রিলিজে নতুন কি:
- যোগ করা হয়েছে urllib3.add_stderr_logger () দ্রুত জন্য urllib3 মধ্যে stderr ডিবাগ লগ সক্রিয়.
- দেশীয় সম্পূর্ণ URL টি.
- অবস্থা কোড 303. যদি বিল্ট ইন পুনর্নির্দেশ পদ্ধতি স্যুইচ করতে হবে 'পেতে' (ইস্যু # 11)
- urllib3.PoolManager অনুরোধ URI পাঠানোর আগে প্রকল্প এবং হোস্ট রেখাচিত্রমালা. (ইস্যু # 8)
- বিষয়বস্তু প্রকার হেডারের উপর ভিত্তি করে স্বয়ংক্রিয় ডিকোডিং, ব্যর্থ হলে এর জন্য নতুন urllib3.exceptions.DecodeError ব্যতিক্রম.
- বাগ সংশোধন করা হয়েছে. পুল উচ্ছেদ বন্ধ স্পষ্ট সংযোগ যোগ করা হয়েছে. যোগ করা হয়েছে urllib3.PoolManager.clear ().
- 99% - & gt; 100% ইউনিট পরীক্ষা কভারেজ.
পার্স urllib3.util.parse_url (URL) এ উপলব্ধ (প্রমাণীকরণ, পথ, ক্যোয়ারী, টুকরা সহ)
পুল হ্রাসের এবং লিক সংযোগ (ইস্যু # 76) সঙ্গে
সংস্করণ 1.4 নতুন কি:.
- ক্ষুদ্র AppEngine সংক্রান্ত সংশোধন করা হয়েছে
- ) (uuid.uuid4 করতে mimetools.choose_boundary থেকে সুইচ.
- উন্নত URL টি পার্সিং. (ইস্যু # 73)
- IPv6, URL সমর্থন. (ইস্যু # 72)
সংস্করণ 1.3 নতুন কি:.
- সরানো হয়েছে প্রাক 1.0 অবচিত এপিআই
- urllib3.util submodule মধ্যে Refactored সাহায্যকারী.
- স্থায়ী একাধিক এনকোডিং তালিকা-এর tuples একাধিক মান সঙ্গে কি জন্য সমর্থন. (ইস্যু # 48)
- পাইথন 3. সঠিকভাবে মিশে গিয়ে তৈরি হচ্ছে না প্রতিক্রিয়ায় স্থায়ী একাধিক সেট কুকি হেডার (ইস্যু # 53)
- Py27 সঙ্গে AppEngine সমর্থন. (ইস্যু # 61)
- ক্ষুদ্র encode_multipart_formdata সংশোধন করা হয়েছে.
3 স্ট্রিং বাইট বনাম পাইথন সম্পর্কিত
সংস্করণ 1.2.2 নতুন কি:
- পরীক্ষা-প্রয়োজনীয়তা গ্রেপ্তার না স্থায়ী প্যাকেজিং বাগ. TXT. (ইস্যু # 47)
সংস্করণ 1.2.1 নতুন কি
- সম্পর্কিত অন্য একটি বাগ সংশোধন করা হয়েছে SSL মডিউল
- না হলে পাওয়া যায়. (ইস্যু # 41)
- অবস্থান পার্সিং ত্রুটি এখন শাহো লিখেছেন থেকে আহরণ যা urllib3.exceptions.LocationParseError বাড়াতে.
সংস্করণ 1.2 নতুন কি:
- (3.2.2 পরীক্ষিত) যোগ করা হয়েছে পাইথন 3 সমর্থন
- ছেড়ে যাওয়া পাইথন 2.5 সমর্থন (2.6.7 উপর পরীক্ষা, 2.7.2)
- এটি সমর্থন করে প্ল্যাটফর্মের জন্য পরিবর্তে select.select ব্যবহার select.poll.
- আরো আক্রমনাত্মক সংযোগ পুনঃব্যবহার জন্য পরিবর্তে Queue.Queue ব্যবহার Queue.LifoQueue. ConnectionPool.QueueCls অগ্রাহ্য করে কনফিগার করা যাবে.
- স্থায়ী ImportError সময় ইনস্টল করুন. (ইস্যু # 41)
- স্থায়ী PoolManager (যেমন http - & gt; HTTPS দ্বারা) স্কিম মধ্যে পুননির্দেশনা সঠিকভাবে পূরণ না. (V1.1 ইস্যু # 10 দ্বারা উন্মোচিত ইস্যু # 28)
- বৈশিষ্ট্যসমূহ নিয়ে আসা dummyserver webob + + eventlet পরিবর্তে টর্নেডো ব্যবহার করার জন্য. সরানো হয়েছে বিদেশী অসমর্থিত dummyserver পরীক্ষার এন্ডের. যোগ করা হয়েছে সকেট-স্তরের পরীক্ষা.
- আরো পরীক্ষা. কৃতিত্ব আনলক. 99% কভারেজ
SSL মডিউল উপলব্ধ নেই যখন
কি সংস্করণ 1.1 নতুন:
নিজস্ব root পরিচয়ে নামস্থান মডিউল dummyserver Refactored
- (পরীক্ষার জন্য ব্যবহার করা ).
- Py32 এর ssl_match_hostname মধ্যে vendoring দ্বারা VerifiedHTTPSConnection জন্য যোগ করা হয়েছে হোস্ট-নেম যাচাই. (ইস্যু # 25)
- স্থায়ী ক্রস হোস্ট HTTP- র পুননির্দেশনা. (ইস্যু # 10)
- স্থায়ী decode_content উপেক্ষা করা হচ্ছে. (ইস্যু # 27)
- স্থায়ী সময়সীমার সংক্রান্ত বাগ. (সমস্যা # 17, # 23)
PoolManager ব্যবহার করে যখন
Urlopen মাধ্যমে সেট যখন
কি সংস্করণ 1.0.2 নতুন:
- VerifiedHTTPSConnection টাইপো সংশোধন করা হয়েছে, যা একটি হিসাবে শুধুমাত্র উপস্থাপন করতে হবে আপনি নিজে বস্তুর ব্যবহার করছেন বাগ. (ধন্যবাদ pyos)
- তৈরি RecentlyUsedContainer (এবং এর ফলে PoolManager) আরো থ্রেড-নিরাপদ একটি mutex মধ্যে অ্যাক্সেস লগ মোড়কে. (ধন্যবাদchrister)
- তৈরি RecentlyUsedContainer আরো অভি মত পরীক্ষা দিয়ে, (সংশোধন __delitem__ এবং __getitem__ আচরণ). কোর urllib3 কোড প্রভাবিত হবে.
কি সংস্করণ 1.0.1 নতুন:
- একই সংযোগ ফিরে পেতে হবে যেখানে একটি বাগ সংশোধন করা হয়েছে পুল মধ্যে দুইবার, বিদেশী, & quot ঘটাচ্ছে; HttpConnectionPool পূর্ণ & quot; সতর্কবার্তা লগ ইন করুন.
আবশ্যক
- পাইথন
পাওয়া মন্তব্যসমূহ না