WSGI چیست؟

آفلاین
user-avatar
ارسطو عباسی
05 آذر 1400, خواندن در 4 دقیقه

اگر از توسعه‌دهندگان پایتون هستید و حتی با جنگو کار کرده‌اید احتمال اینکه با WSGI آشنایی نداشته باشید بسیار زیاد است. اما آیا پیدا کردن درک درست از چیستی این موضوع امری ضروری است یا خیر؟ مطمئنا بعنوان یک توسعه‌دهنده پایتون آشنایی با این موضوع مهم بوده و بسیار خوب است که برنامه‌نویسان سمت Back-End که از پایتون استفاده می‌کنند با WSGI آشنایی داشته باشند.

به زبان ساده WSGI یا Web Server Getway Interface یک وب سرور مختص زبان پایتون است که کمک می‌کند تا بتوانیم کدهای پایتونی را روی سرور اجرا کنیم. اما چرا به این وب سرور نیاز داریم؟ مگر Apache چه مشکلی دارد؟

هدف از ایجاد WSGI

وب سرورهای قدیمی مانند آپاچی نمی‌توانستند که کدهای پایتونی را درک کرده و آن‌ها را روی سرورها اجرا کنند. به همین دلیل برنامه‌نویسان پایتون به مشکل برخوردند. در اواخر دهه ۹۰ فردی به نام Grisha Trubetskoy یک ماژول برای وب سرور آپاچی تحت عنوان mod_python نوشت که امکان اجرای پایتون روی وب سرورهای آپاچی را به توسعه‌دهندگان می‌داد. اما با گذر زمان معلوم شد که این ماژول مشکلات امنیتی و اجرایی بسیار زیادی داشته و استاندارد مشخصی ندارد. به همین دلیل در اوایل سال‌های ۲۰۰۰ پروژه mod_python متوقف شد و اعضای جامعه برنامه‌نویسان پایتون تلاش کردند تا استاندارد جدیدی را برای اجرا کردن کدهای پایتونی روی سرور ایجاد کنند.

تلاش‌های این جامعه در نهایت منجر به ایجاد یک استاندارد جامع و وب سروری قدرتمند به نام WSGI‌شد. در حال حاضر WSGI وب سروری‌ست که اپلیکیشن‌های مبتنی بر وب پایتونی با استفاده از آن اجرا می‌شوند.

در زیر می‌توانید یک دیاگرام کلی از ساختار WSGI را مشاهده کنید:

WSGI server invoking a WSGI application.

مطابق با دیاگرام بالا، WSGI می‌تواند از اپلیکیشن یا چهارچوب نوشته شده یک شئ فراخوان پذیر یا Callable Object را فراخوانی کند. این اتفاق با استفاده از استاندارد PEP 3333 انجام می‌شود.

اما سوالی که پیش می‌آید این است که چرا بجای استفاده از WSGI از یک وب سرور ساده‌تر و سرراست‌تر استفاده نکنیم؟

  • WSGI یک استاندارد تایید شده از نظر جامعه کاربری پایتون و خود بنیاد توسعه پایتون است. از این جهت می‌توانید از استاندارد بودن اپلیکیشن خودتان مطمئن شده و از خطاهایی که ممکن است اتفاق بیافتد دور باشید.
  • منعطف بودن WSGI یکی دیگر از مزایای بزرگ این وب سرور است. در صورت استفاده از WSGI توسعه‌دهندگان می‌توانند به سادگی اپلیکیشن‌های‌شان را از دیگر وب سرورها به WSGI منتقل کرده و این فرایند را به صورت عکس نیز انجام دهند.
  • مقیاس‌پذیری بالا. توانایی مدیریت درخواست‌های زیاد در فرایند توسعه اپلیکیشن، کار فریمورک یا زبان برنامه‌نویسی نیست، بلکه در اصل وب سرور است که این نقش را برعهده دارد. WSGI برای مدیریت درخواست‌های زیاد یک انتخاب مناسب و بسیار کاربردی است. سرورهای WSGI می‌توانند درخواست‌های دریافتی از وب سرور را مدیریت کرده و به شکل منطقی حالتی از ارتباط درست را ایجاد کنند. از این جهت مدیریت ترافیک و درخواست‌های کاربران در WSGI یکی از قابلیت‌های بسیار مهم آن است.

WSGI Server - Web server - Browser

به عنوان یک توسعه‌دهنده بک-اند پایتون شما نیازی به نگرانی در رابطه با پیاده‌سازی WSGI داشته باشید چرا که خود فریمورک‌های استاندارد پایتونی مانند جنگو، فلسک و Bottle براساس این وب سرور کار می‌کنند. اما چیزی که شما نیاز دارید از آن‌ها آگاه باشید عبارت است از موارد زیر:

  • WSGI چیست و چه هدفی در پشت ساختن آن وجود داشته
  • شیوه مدیریت پردازش‌ها در WSGI به چه صورتی هست
  • شیوه تعامل WSGI با قسمت‌ها ی مختلف (وب سرور، فریمورک، کاربران، مرورگر و...)

درک این موضوعات برای افرادی که قصد دارند در زمینه برنامه‌نویسی سمت وب بسیار حرفه‌ای‌تر از حالت معمول عمل کنند الزامی‌ست. در نتیجه می‌توانید در این زمینه مطالعات‌تان را افزایش دهید.

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
ارسطو عباسی @arastoo
برنامه‌نویس و مدیر بخش تولید محتوا وبسایت راکت - وبلاگ شخصی: https://arastoo.dev
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو