wsgi پایتون چیست؟
آیا تا به حال به این فکر کرده اید که برنامه های وب پایتون چگونه روی وب سرورهای Apache یا NGINX کار می کنند؟ پاسخ WSGI یا رابط دروازه وب سرور است. wsgi در زمان دیپلوی برنامههای جنگو یا فلسک نقش حیاتی ایفا میکند.
دوره پیشنهادی: دوره آموزش پایتون (python)
# wsgi چیست و چطور کار میکند؟
WSGI مخفف "Web Server Gateway Interface" است. wsgi برای ارسال درخواست از یک وب سرور (مانند Apache یا NGINX) به یک فریمورک تحت وب پایتون استفاده میشود. از آنجا، پاسخ به وبسرور بازگردانده میشوند تا به کاربر ارائه شود.
اکثر فریم ورک های پایتون شامل یک سرور توسعه پایه هستند که می تواند در هنگام توسعه برنامه وب شما مورد استفاده قرار گیرد. هنگامی که توسعه برنامه شما به اتمام رسید و خواستید برنامه را دیپلوی کنید، در اکثر مواقع از wsgi استفاده میکنید. مشخصات wsgi پایتون در PEP 3333 به طور عمیق توضیح داده شده است.
حال، بیایید نگاهی به نحوه عملکرد WSGI بیندازیم. برای به دست آوردن درک روشنی از WSGI، اجازه دهید یک سناریو را فرض کنیم که در آن شما یک برنامه وب در جنگو یا فلسک توسعه دادهاید. همانطور که در شکل نشان داده شده است.
در تمام برنامههای وب، کاربران درخواست های خود را به وب سرور ارسال میکنند. در این سناریو ما از وب سرور nginx استفاده میکنیم. این وب سرور درخواست های کاربران را گرفته و پردازش میکند. در اینجا یک سوال مهم پیش می آید. وب سرور چطور قرار است با برنامه پایتونی ما کار کند؟ وب سرورها توانایی درک کدهای پایتونی را ندارند و نمیتوانند با برنامه های پایتون ارتباط برقرار کنند.
از این رو، برای انجام تعامل بین وب سرور و برنامه پایتون به یک واسطه نیاز است. استاندارد برای انجام ارتباط بین وب سرور و برنامه پایتون، WSGI است.
تصویر زیر نشان دهنده ارتباطی است که بین وب سرور، WSGI و برنامه پایتون انجام می شود:
ویدیو پیشنهادی: آشنایی کامل با الگوریتم و ساختارهای داده در پایتون
# چرا به جای آن که وب سرور را مستقیما به جنگو با فلسک متصل کنیم، از wsgi استفاده میکنیم؟
اگر مستقیماً وب سرور را به برنامه خود متصل کنید، انعطاف پذیری برنامه شما را کاهش می دهد. از آنجایی که وب سرور اکنون مستقیماً به برنامه وب متصل است، نمی توانید اجزای پشته وب را تعویض کنید. اکنون، بیایید به یک مثال نگاهی بیندازیم تا شما را در مورد کاربرد WSGI روشن کنیم. به عنوان مثال، امروز تصمیم گرفتید برنامه خود را با استفاده از Gunicorn اجرا کنید، اما پس از چند سال تصمیم گرفتید که از Gunicorn به mod_wsgi تغییر دهید. حال در این حالت می توانید به راحتی بدون ایجاد هیچ تغییری در اپلیکیشن یا فریم ورکی که WSGI را پیاده سازی می کند به mod_wsgi سوئیچ کنید. از این رو، WSGI انعطاف پذیری را برای برنامه شما فراهم می کند.
یکی دیگر از دلایل استفاده از WSGI مقیاس پذیری آن است. هنگامی که برنامه شما فعال است، می تواند هزاران درخواست در برنامه شما وجود داشته باشد. از این رو، WSGI قادر به ارائه هزاران درخواست در یک زمان است. همانطور که می دانیم، سرور WSGI مسئول رسیدگی به درخواست ها از وب سرور است و برای انجام ارتباط آن درخواست ها به فرآیند چارچوب برنامه تصمیم می گیرد. در اینجا میتوانیم مسئولیتها را بین سرورها برای مقیاسبندی ترافیک وب تقسیم کنیم.
اگر مقاله بالا را دوست داشتید، پیشنهاد میکنیم به مطالب زیر هم سر بزنید: