جنگو، یک فریمورک وب هست، پس نیاز به وبسرور برای عمل کردن داره و چون اکثر وبسرورها به طور نیتیو پایتون نمیفهمن، ما نیاز به یک رابط برای ارتباط نیاز داریم.
جنگو در حال حاضر دو رابط رو پشتیبانی میکنه:
شما باید همینطور در نظر بگیرین که چطور فایلهای static برنامه رو میخواین دپلوی کنین و همینطور چطور میخواین error reporting رو مدیریت کنین.
در واقع Eventlet یک concurrent networking library پایتون هست که از coroutines و greenlets برای دستیابی به همزمانی استفاده میکنه. این امکان رو میده که عملیاتهای non-blocking I/O در محیط single-threaded اجرا بشن. درواقع امکان اجرای تعداد زیادی کانکشن به طور همزمان بدون نیاز به multi-threading یا multi-processing رو ایجاد میکنه. بر اساس مدل event-driven هست. انتخاب مناسب برای برنامههایی که نیازمند همزمانی بالا و کارایی در هندل کردن تعداد زیادی کانکشن هستن اما از پیچیدگی multi-threading یا multi-processing اجتناب میخوایم بکنیم.
این رویکرد شامل ایجاد چندین پروسس قبل از نیاز بهشون برای هندل کردن ریکوئستهای ورودی میشه. هر پروسس یک نسخه از کد برنامه و منابع برای خودش داره و مستقل عمل میکنه. درخواستها بین پروسسهای در دسترس تقسیم میشن و امکان هندل کردن همزمان چندین کانکشن رو ایجاد میکنن. ریسک shared state issues وجود نداره، چون هر کدوم منابع مستقل خودشون رو دارن.
در این رویکرد هر کانکشن و درخواست توسط یک thread مجزا هندل میشه. ترد ها به صورت همزمان در یک پروسس اجرا میشن. GIL میتونه محدودیت تسکهای CPU-bound باشه و اما برای تسکهای I/O-bound کمتر مشکل ایجاد میکنه.
مشابه pre-forking، شامل ایجاد چندین پروسس و هندل کردن به طور همزمان کانکشنهاست.
یک کتابخونه پایتون برای نوشتن کد single-threaded concurrent بوسیله coroutines, tasks, and event loops هست. یک چارجوب برنامه نویسی غیرهمزمان میده که اجازه هندل کردن تسکهای I/O-bound رو بدون استفاده از threads یا processes رو میده.
بجای ایجاد یک thread جدید برای هر کانکشن، یک استخر با سایز مشخص از thread ها نگهداری میشه تا درخواستهای ورودی رو هندل کنن. با این روش سربار ایجاد تعداد زیاد thread برداشته میشه.
مشابه asyncio، این کتابخونهها ابزارهایی برای نوشتن asynchronous و concurrent کد بوسیله coroutines در اختیارمون میذارن.