چگونه یک میلیون درخواست در ثانیه را با پایتون پاسخ دهیم ؟

اگر در حوزه تحلیل داده کار کرده باشید،میدانید که پایتون را معمولاً برای ساخت مدلهای پیشگویی کننده و امور مربوط به پاکسازی و پردازش اولیه داده استفاده میکنیم و برای پاسخگویی به کاربران و به عبارت دیگر به عنوان Backend
کمتر از این زبان استفاده می کنیم. دلیل آن هم کارآیی پایین آن نسبت به رقبای دیگر بازار مانند Rust
یا Node.js
است.
حدود یکسال پیش مقاله ای دیدم با عنوان پردازش یک میلیون درخواست در ثانیه با پایتون که در آن یک میکروفریمورک جدید با نام Japronto
معرفی شده بود که با هدف ایجاد یک بستر سریع برای پاسخگویی به درخواستهای همزمان با حجم بالا و با زبان سی و به صورت بهینه از اول نوشته شده و استفاده از کتابخانه asyncio
در آن، امکان برنامه نویسی همزمان و ناهمزمان را به صورت خودکار فراهم کرده است. استفاده از امکانات موازیسازی HTTP
که با نام HTTP pipelining هم شناخته می شود و در زیر با شکل توضیح داده شده است، از جمله دیگر بهینه سازیهایی است که در این میکروفریمورک صورت گرفته است.

نموداری که در صفحه اصلی این میکروفریمورک به مقایسه میزان زمان پاسخ آن با سایر زبانها و فریمورکها پرداخته است از قرار زیر است :

البته در خود سایت Japronto
هم آمده است که برخی از این زبانها و فریمورکها با تنظیمات پیشرفته اگر پیکربندی شوند، میزان اختلاف سرعت پاسخگویی کمتر میشود اما هنوز به Japronto
نخواهند رسید.
نمونه کد سادهای که با این میکروفریمورک نوشته شده است را میتوانید در بالا مشاهده کنید.
در هر صورت اگر در کارهای تخصصی روزانه خود با پایتون سروکار دارید و میخواهید خدماتی را بر اساس تحلیلها و مدلهایی که ساختهاید، به کاربران ارائه دهید، میتوانید با Japronto
یک سرویس سریع با قابلیت پاسخگویی بسیار بالا ایجاد کنید. هر چند استفاده از میکروفریمورکها در پروژههای بزرگ توصیه نمیشود.
پینوشت : با تشکر از جناب دانشور عزیز که نکاتی را در بخش نظرات این مقاله مطرح کردند، جهت بررسی دقیقتر سرعت پاسخگویی و مقایسه بین فریمورکهای موجود در بازار، به این آدرس مراجعه کنید.