gunicorn پایتون چیست؟
ابزار gunicorn که مخفف کلمه green unicorn به معنی اسب تک شاخ سبز است یک سرور WSGI است که برای اجرای برنامه های وب پایتونی استفاده میشود. بسیاری از افراد از گونیکورن یا uWSGI استفاده میکنند بدون اینکه بدانند واقعا این ابزارها چه کاری انجام میدهند. در این مطلب یاد میگیرید که gunicorn چیست و چه کاربردی دارد؟
مقاله پیشنهادی: wsgi پایتون چیست؟
gunicorn یک سرور wsgi است
سرور wsgi ابزاری است که به شما اجازه میدهد برنامه های وب پایتونی را اجرا کنید زیرا وب سرورهای عادی مانند Apache قادر به انجام اینکار نیستند. gunicorn یکی از چندین سرور wsgi است که میتوانید استفاده کنید و به دلیل با ثبات بودن بسیار محبوب است و شرکت های بزرگی مانند اینستاگرام از آن استفاده میکنند.
اگر با فریمورک های پایتونی مانند جنگو یا فلسک برنامه ای ساخته باشید میتوانید از گونیکورن برای اجرا برنامه هایتان در حالت production استفاده کنید. gunicorn طوری ساخته شده تا بتواند با انواع وب سرورها کار کند. این ابزار ارتباط بین وب سرور و برنامه ساخته شده شما را کنترل میکند. با استفاده از gunicorn دیگر نیازی نیست که نگران موارد زیر باشید:
- ارتباط با چند سرور
- واکنش به تعداد زیادی از درخواست های وب به طور همزمان و توزیع بار
- اجرای چندین فرآیند برنامه وب
همانطور که در PEP3333 توضیح داده شده، WSGI راهی است برای اطمینان از اینکه وب سرورها و برنامه های وب پایتون بتوانند با یکدیگر صحبت کنند. بنابراین جایی در داخل برنامه شما (معمولا یک فایل wsgi.py) یک آبجکت تعریف شده است که می تواند توسط Gunicorn فراخوانی شود. این آبجکت برای ارسال داده های Request به برنامه شما و دریافت داده های Response استفاده می شود.
گونیکورن میتواند چندین نمونه از برنامه وب شما را اجرا کند، از سالم بودن آنها مطمئن شود و در صورت نیاز آنها را مجددا راه اندازی کند، Request های دریافتی را بین چندین نمونه برنامه وب شما توزیع کند و با وب سرور ارتباط برقرار کند. خوشبختانه تلاش های زیادی برای بهینه سازی گونیکورن انجام شده و تمام وظایف خود را به سرعت انجام میدهد.
مقاله پیشنهادی: آموزش تغییر نام فایل با پایتون
گونیکورن چطور برنامه ها را اجرا میکند
یک برنامه معمول وب پایتونی مشابه تصویر زیر است:
Gunicorn می داند که چگونه یک برنامه وب را بر اساس قلاب بین سرور WSGI و برنامه وب سازگار با WSGI اجرا کند. در اینجا نمونه ای از یک برنامه وب معمولی جنگو و نحوه اجرای آن توسط Gunicorn آورده شده است. در تمام پروژه های جنگو یک فایل به نام wsgi.py وجود دارد که محتویات مانند کد زیر دارد:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_defaults.settings")
application = get_wsgi_application()
فایل wsgi.py توسط دستور django-admin زمانی که پروژه جنگو برای اولین بار ایجاد می شود، تولید شده. جنگو متغیر application را از طریق فایل wsgi.py نمایش می دهد تا سرور WSGI بتواند از application به عنوان یک قلاب برای اجرای برنامه وب استفاده کند.