একটি (দীর্ঘ) এর আগে আমি একটি ওয়েব-মাকড়সা লিখেছিলাম যা একই সময়ে একইসাথে অনুরোধগুলি সক্রিয় করতে আমি মাল্টিথ্রেড করেছি। এটি আমার পাইথন যৌবনে ছিল, আমি জিআইএল এবং এর সাথে সম্পর্কিত সমস্যাগুলি সম্পর্কে জানতাম যে দিনগুলি এটি বহুবিবাহিত কোডের জন্য তৈরি করে (IE, বেশিরভাগ সময় জিনিসগুলি কেবল সিরিয়ালায়িত হয়!) ...
আমি এই কোডটিকে আরও শক্তিশালী করতে এবং আরও ভাল সম্পাদন করতে পুনরায় কাজ করতে চাই। আমি এটি করতে পারার দুটি উপায় রয়েছে: আমি নতুন মাল্টিপ্রসেসিং মডিউলটি 2.6+ এ ব্যবহার করতে পারি বা আমি কোনও ধরণের চুল্লি / ইভেন্ট-ভিত্তিক মডেলের জন্য যেতে পারি। আমি বরং পরে এটি করব কারণ এটি অনেক সহজ এবং ত্রুটি-ঝুঁকির চেয়ে কম।
সুতরাং প্রশ্নটি কীভাবে কাঠামোটি আমার প্রয়োজনের জন্য সবচেয়ে উপযুক্ত হবে তার সাথে সম্পর্কিত। নীচে আমি এখন পর্যন্ত যে বিকল্পগুলি জানি তার একটি তালিকা রয়েছে:
- পাকানো : পাইথন চুল্লির ফ্রেমওয়ার্কগুলির দাদাদি: জটিল এবং কিছুটা ফুলেছে বলে মনে হচ্ছে। একটি ছোট কাজের জন্য খাড়া শেখার বক্ররেখা।
- ইভেন্টলেট : লিন্ডেন্লাবের ছেলেদের কাছ থেকে । গ্রিনলেট ভিত্তিক কাঠামো যা এই ধরণের কাজের দিকে এগিয়ে যায়। যদিও আমি কোডটি একবারে দেখেছি এবং এটি খুব সুন্দর নয়: নন-পেপ 8 অনুগত, প্রিন্টের সাথে ছড়িয়ে ছিটিয়ে আছে (লোকেরা কেন এটি কোনও ফ্রেমওয়ার্কে করে !?), এপিআই কিছুটা বেমানান বলে মনে হচ্ছে।
- পাইয়েভ : অপরিণত, এখনই কেউ এটি ব্যবহার করছে বলে মনে হচ্ছে না যদিও এটি মুক্তির উপর ভিত্তি করে তাই এটি একটি শক্ত ব্যাকএন্ড পেয়েছে।
- অ্যাসিঙ্কোর : স্ট্ডলিব থেকে: নিম্ন স্তরের থেকে, মনে হয় কেবল কিছুটা মাটি থেকে নামার জন্য লেগওয়ার্ক জড়িত।
- টর্নেডো : যদিও এটি একটি সার্ভার ওরিয়েন্টেড পণ্য যা সার্ভার গতিশীল ওয়েবসাইটগুলির জন্য ডিজাইন করা হয়েছে এটিতে একটি অ্যাসিঙ্ক এইচটিটিপি ক্লায়েন্ট এবং একটি সরল আইলোপ রয়েছে । দেখে মনে হচ্ছে এটি কাজটি করতে পারে তবে এটির উদ্দেশ্যে কী ছিল না। [সম্পাদনা করুন: দুর্ভাগ্যক্রমে উইন্ডোজে চালিত হয় না, যা আমার পক্ষে এটি গণ্য করে - এটি আমার জন্য এই লম্পট প্ল্যাটফর্মটি সমর্থন করা দরকার]
আমি কিছু মিস করেছি কি? নিশ্চয়ই সেখানে একটি লাইব্রেরি থাকতে হবে যা একটি সরলীকৃত অ্যাসিঙ্ক নেটওয়ার্কিং লাইব্রেরির মিষ্টি স্পটে ফিট করে!
[সম্পাদনা করুন: এই পৃষ্ঠায় তার পয়েন্টারটির জন্য আন্তরিক ধন্যবাদ । আপনি নীচে স্ক্রোল করলে আপনি দেখতে পাবেন যে প্রকল্পগুলির একটি দুর্দান্ত তালিকা রয়েছে যা লক্ষ্য করে যে এই কাজটি একভাবে বা অন্য কোনওভাবে মোকাবেলা করতে। এটি আসলে মনে হয় যে জিনিসগুলি আসলেই মোচড়ের সূচনার সময় থেকেই এগিয়ে গেছে: লোকেরা এখন একটি traditionalতিহ্যবাহী চুল্লি / কলব্যাক ওরিয়েন্টেড পরিবর্তে একটি কো-রুটিন ভিত্তিক সমাধানের পক্ষে বলে মনে হচ্ছে । এই পদ্ধতির সুবিধাগুলি আরও স্পষ্টতর সরাসরি কোড: আমি অবশ্যই অতীতে খুঁজে পেয়েছি, বিশেষত যখন boost.asio এর সাথে কাজ করার সময়সি ++ তে যে কলব্যাক ভিত্তিক কোড এমন নকশাগুলির দিকে নিয়ে যেতে পারে যা কঠোর অনুসরণ করতে পারে এবং প্রশিক্ষণহীন চোখের তুলনায় অপেক্ষাকৃত অস্পষ্ট। সহ-রুটিনগুলি ব্যবহার করে আপনি এমন কোড লিখতে পারবেন যা অন্ততপক্ষে আরও কিছুটা সিঙ্ক্রোনাস দেখাচ্ছে। আমার ধারণা এখন আমার কাজটি হ'ল এই অনেকগুলি লাইব্রেরির মধ্যে কোনটি আমার পছন্দ এবং এটি দিয়ে যেতে! খুশি আমি এখন জিজ্ঞাসা করেছি ...]
[সম্পাদনা করুন: যে কেউ এই প্রশ্ন অনুসরণ করে বা হোঁচট খেয়েছে বা এই অর্থে যে কোনও অর্থে যত্নশীল তার পক্ষে আগ্রহের বিষয়: আমি এই কাজের জন্য উপলব্ধ সরঞ্জামগুলির বর্তমান অবস্থার সত্যই দুর্দান্ত লেখার সন্ধান পেয়েছি ]
select
I / O মাল্টিপ্লেক্সিংয়ের জন্য ব্যবহার করে। তবে আপনার টর্নেডো-পিউভ দিয়ে একটি সুন্দর পারফরম্যান্স পাওয়া উচিত । ২. পাইথন ৩.৩+ এ এখন অ্যাসিনসিও রয়েছে এবং এর ব্যাকপোর্ট ট্রোলিয়াস যা তার ইভেন্ট লুপে কোনও টর্নেডো অ্যাপ্লিকেশন চালাতে দেয় ( টুইস্টটি শীঘ্রই সমর্থিত হবে)।