Tornado প্রক্সি বিকল্পের জন্য সঠিক HTTP ব্যাকএন্ড দরকার
প্রক্সি অনুরোধের বিকল্প কনফিগার করার আগে Tornado-এর সক্রিয় HTTP ক্লায়েন্ট বাস্তবায়ন যাচাই করুন।
Tornado একটি অসিঙ্ক্রোনাস HTTP ক্লায়েন্ট ইন্টারফেস দেয়, যার নিচে বিভিন্ন বাস্তবায়ন থাকে। তাই প্রক্সি এন্ডপয়েন্ট সঠিক হলেও নির্বাচিত বাস্তবায়নের কারণে প্রক্সি বিকল্প ব্যর্থ হতে পারে।
HTTP ক্লায়েন্ট ডকুমেন্টেশন-এ SimpleAsyncHTTPClient কে ডিফল্ট বাস্তবায়ন হিসেবে চিহ্নিত করা হয়েছে এবং curl-ভিত্তিক বিকল্পের বর্ণনা দেওয়া হয়েছে। proxy_host-এর মতো অনুরোধের বিকল্পগুলোর বাস্তবায়ন-নির্দিষ্ট সহায়তা নোট আছে। fetch কলে বিকল্প যোগ করার আগে সেই নোটগুলো পড়ুন।
ক্লায়েন্ট তৈরি করার আগে কনফিগার করুন
যে পরিবেশে ইতিমধ্যে curl ব্যাকএন্ড আছে, সেখানে কোনো অ্যাপ্লিকেশন তার শেয়ার্ড ক্লায়েন্ট তৈরি করার আগে এটি নির্বাচন করতে পারে:
from tornado.httpclient import AsyncHTTPClient
AsyncHTTPClient.configure('tornado.curl_httpclient.CurlAsyncHTTPClient')
client = AsyncHTTPClient()
তারপর উদ্দিষ্ট অনুরোধের জন্য ডকুমেন্টেড প্রক্সি হোস্ট, পোর্ট, প্রমাণীকরণ ও টাইমআউট বিকল্প ব্যবহার করুন। হোস্টনামকে সংখ্যাগত পোর্ট থেকে আলাদা রাখুন। ব্যাকএন্ড নির্বাচন করলে নিজে থেকে প্রক্সি এন্ডপয়েন্ট নির্বাচিত হয় না। অনুমোদিত পাবলিক HTTP রুটের জন্য HTTP প্রক্সি তালিকা সেই অনুরোধের বিকল্পগুলোর জন্য হোস্ট ও পোর্ট প্রার্থী সরবরাহ করে।
ক্লায়েন্ট তৈরি গুরুত্বপূর্ণ, কারণ এই কোড চলার আগেই কোনো অ্যাপ্লিকেশন বা ফ্রেমওয়ার্ক একটি HTTP ক্লায়েন্ট তৈরি করে রেখে দিতে পারে। ব্যর্থ অনুরোধে ব্যবহৃত প্রকৃত ইনস্ট্যান্সটি পরীক্ষা করুন, পরে আরেকটি ক্লায়েন্ট তৈরি করে ধরে নেওয়ার বদলে যে এটি প্রথমটিকে ব্যাখ্যা করে।
নির্ণয়ের জন্য সক্রিয় ব্যাকএন্ড এবং তার ভিত্তি লাইব্রেরির সংস্করণ ব্যর্থ ধাপের সঙ্গে লিপিবদ্ধ করুন। অসমর্থিত অনুরোধের বিকল্পকে নেটওয়ার্ক টাইমআউট এবং প্রক্সি ফেরত দেওয়া HTTP প্রতিক্রিয়া থেকে পৃথক করুন। সেই পর্যবেক্ষণগুলো ভিন্ন ভিন্ন সমাধানের দিকে নিয়ে যায়।