میلاد حاتمی
میلاد حاتمی
خواندن ۲ دقیقه·۵ سال پیش

Gunicorn چیست؟

اگر بخوام توضیح بدم که Gunicorn چیست و چه کاربردی دارد ، اول باید در مورد WSGI یکم توضیح بدم. رسمی مینویسم، شاید کسی کپی کرد. خوشحال میشم که با نظرات ارزشمندتان این مطلب رو کامل کنید.

پس wsgi چیست؟

این WSGI که مخفف Web Server Gateway Interface است، یک رابط بین وب سرور و وب اپلیکیشن/فریمورک پایتون است که مشخص می کند اجزای وب اپلیکیشن/فریمورک چطور به یک درخواست (request) پاسخ مشخصی بدهند. مشخص کردن چگونگی اجرای مفسر پایتون وظیفه ی WSGI نیست. WSGI مانند یک وب سرور درخواست ها را گرفته و به اپلیکیشن ارسال می کند.

شامل سمت server و سمت application است. سمت server که یک وب سرور مثل Apache یا Nginx است و سمت application شامل یه Python Callable است، یعنی چیزی که آبجکتی دارای متد __call__ باشد، مثل فریمورک جنگو.

طبق PEP3333 یک WSGI روشی برای اطمینان از این است که وب سرور و وب اپلیکیشن های پایتون بتوانند با یکدیگر صحبت کنند. توضیحات بیشتر

حالا Gunicorn چیست؟

Gunicorn
Gunicorn

توسط آقای Benoit Chesneau به زبان پایتون نوشته شده است.

Benoit Chesneau, author of Gunicorn
Benoit Chesneau, author of Gunicorn

گونیکورن (Gunicorn) یک پیاده سازی (implementation) از WSGI است. و به عنوان یک Python WSGI HTTP Server می تواند application را اجرا کرده ، به پورت 80 گوش می کند و ترافیک را به اپلیکیشن بدهد. Gunicorn از همه چیزهایی که بین وب سرور و اپلیکیشن اتفاق می افتد مراقبت می کند. وقتی شما یک اپلیکیشن می سازید، نیاز نیست که خودتان کد ارتباط با چندین وب سرور را بنویسید، یا مکانیزم مدیریت و واکنش به تعداد زیاد درخواست (request) را بنویسید یا … همه این کارها را Gunicorn انجام میدهد.

گونیکورن مراقب اجرای چندین نمونه (instance) از وب اپلیکیشن شماست. مراقب سالم بودن آنها و در صورت نیاز راه اندازی مجدد (restart) آنهاست. و درخواست های دریافتی (incoming requests) را بین نمونه ها توزیع می کند و با وب سرور ارتباط برقرار می کند. همچنین گونیکورن این فرایند را بهینه سازی می کند.

پس Gunicorn می تواند به عنوان یک WSGI HHTP Server پایدار برای استقرار پروژه های پایتونی وب مورد استفاده قرار گیرد که در لحظه درخواست های زیادی را می تواند پاسخگو باشد.

اینستاگرام از Gunicorn استفاده کرده است. توضیحات بیشتر

لطفا با نظرات فنی، اشکالات و برداشت های اشتباهی (اگه داشتم) اصلاح کنید.

گونیکورنgunicornwsgideploy djangopython
در حال یادگیری بهتر Django
شاید از این پست‌ها خوشتان بیاید