Tornado vs WSGI
جلسه اول آموزش تورنادو
* تورنادو چیه و چرا باید ازش استفاده کنیم؟
* موارد استفاده از تورنادو
* معایب استاندارد WSGI
این اولین ضبط بود و ممکنه ایراد زیاد داشته باشه پس با فیدبکها تون به بهتر شدن دوره کمک کنید
اصلاحات: WSGI با الهام از CGI ایجاد شده - Prepare درسته که p دوم از قلم افتاده.
موارد استفاده از تورنادو:
Seamless Bidirectional Communication: ارتباطات یکپارچه و مانای دو طرفه
Long Request -> Long Polling -> Comet Requests
High Traffic : ترافیک زیاد
Continuous Data Exchange: تبادل داده پیوسته
بازیهای آنلاین
تعداد زیاد ارتباطات همزمان
Push Notifications
کار با سیستمهای IO Bound
فریمهای ایدهآل باید ویژگیهایی داشته باشند:
۱- از کتابخانههای شبکه پشتیبانی کنند
۲- از ناهمروندی پشتیبانی کنند
۳- از web2 و web3 پشتیبانی کنند
۴- از استاندارد WSGI آگاه باشند
۵- مستندات و جامعه کاربری خوب داشته باشند
در چه جاهایی بهتر است از تورنادو استفاده نشود:
درخواستهای CPU Bound - پروژههایی که باید به سرعت انجام شوند و ...
دیگر فریمورکهای ناهمروند پایتون:
Sanic - Vibora - Quart - FastAPI - Twisted - Diesel - EventLet و ...
لزوم استفاده از تورنادو و معایب استاندارد WSGI و فریمورکهای مبتنی بر این استاندارد:
۱- این استاندارد stateless است و درخواستها در این استاندارد چرخه ذیل را طی میکنند:
Make Request -> Handle Request -> Prepare Headers -> Make Response -> Finish Request
در این چرخه جایی برای پشتیبانی از درخواستهای ناهمروند و غیربلاکشونده وجود ندارد
۲- این استاندارد از هدرهای آپگرید شده(Upgrade Headers) پشتیبانی نمیکند. وبسوکت را میتوان یک ارتباط با هدر آپگرید شده دانست به صورتی که پس از ایجاد ارتباط بین کلاینت و سرور و Handshake با HTTP انجام میگیرد، پیامی از کلاینت به سرور برای آمادگی ایجاد ارتباطی مانا فرستاده میشود و درصورتی که سرور نیز آمادگی برقراری این نوع ارتباط را داشته باشد، هدر درخواست آپگرید شده و کانکشنی مانا بر مبنای TCP یا UDP ایجاد میشود. بنابراین فریمورکهای مبتنی بر این استاندارد از Websockets پشتیبانی نمیکنند.
۳- این استاندارد از Transfer Encoding پشتیبانی نمیکند. در واقع این استاندارد با پاسخهای فشرده شده با Gzip یا Deflate مشکل دارد. البته فریمورکهای مبتنی بر این استاندارد مانند Django و Pyramid از این قاعده تبعیت نمیکنند!
۴-یکی از مزایای این استاندارد پشتیبانی از Middlewareها است با این حال پشتیبانی از middlewareها را میتوان نقطه ضعف هم دانست. در هر بار اجرای middlewareها متغیرهای محیطی به صورت مستقل اجرا میشوند و درنتیجه زمان بیشتری از cpu به اجرای آنها تخصیص میباید.
۵- این استاندارد با الهام از CGI طراحی شده است و درنهایت لایهای انتزاعی برای یک Interface قدیمی است.
۶- برای این استاندارد یک API رسمی وجود ندارد.
۷- مشکلاتی مربوط به یونیکد در این استاندارد و فریمورکهای مبتنی بر آن وجود داشته که هماکنون اکثر آنها حل شدهاند.
اما در نهایت WSGI روشی یکتا است که اجرای اپهای پایتونی را بر روی وبسرورهای مختلف سرعت بخشیده و به بهبود روند برنامهنویسی کمک کرده است و آن را آسان نموده است که معروفیت فریمورک Django گواهی برآن است.