محتوای آموزشی وبلاگ نتآرام
یک برنامهٔ پایتون ساختهاید و حالا میخواهید آن را روی اینترنت بگذارید. ممکن است با Django یک سایت ساخته باشید یا با FastAPI یک API داشته باشید. وقتی میزبانی میگوید «پایتون پشتیبانی میشود»، اولین سؤال این است: آیا فقط صفحهٔ سایت اجرا میشود، یا همهٔ بخشهای برنامهٔ من هم امکان اجرا دارند؟
برای یک سایت ساده، هاست پایتون میتواند کافی باشد. اما اگر برنامه گزارش میسازد، ویدئو پردازش میکند، پیام گروهی میفرستد یا اتصال زنده دارد، چند نیاز دیگر هم داریم. این آموزش کمک میکند نیازتان را به زبان روشن به میزبان بگویید، حتی اگر هنوز تجربهٔ ادارهٔ سرور ندارید.
برنامه را با یک مثال بشناسیم
فرض کنیم سایتی دارید که کاربر در آن درخواست گزارش فروش میدهد. صفحهٔ سایت درخواست را میگیرد، ولی ساخت گزارش دو دقیقه طول میکشد. خوب نیست کاربر دو دقیقه منتظر پاسخ همان صفحه بماند. معمولاً سایت درخواست را ثبت میکند و یک برنامهٔ جدا، پشت صحنه گزارش را آماده میکند.
به این برنامهٔ جدا اغلب Worker میگویند؛ یعنی اجراکنندهٔ کار. فهرست کارهای منتظر را هم صف مینامند. وقتی میپرسید «هاست شما Worker دارد؟»، سؤال واقعی این است: «آیا میتوانم برنامهٔ دومم را جدا از وبسایت، بهطور قابل اعتماد اجرا کنم؟»
این برنامهٔ دوم با پردازشهایی که فقط پاسخ کاربران وب را میدهند یکسان نیست. بیشترکردن تعداد اجراکنندههای وب الزاماً ساخت گزارشها را سریعتر نمیکند.
نسخه و بستههای لازم را مشخص کنید
از توسعهدهندهٔ برنامه بپرسید نسخهٔ پایتون و بستههای مورد نیاز چیست. معمولاً فهرست بستهها در فایلی مثل
requirements.txt یا تنظیمات پروژه قرار دارد. این اطلاعات را همراه نام فریمورک و نسخهاش برای میزبان بفرستید.بعضی بستهها فقط با نصب پایتونی آماده میشوند، ولی بعضی به ابزار یا کتابخانهٔ سیستمعامل هم نیاز دارند. برای مثال پردازش ویدئو ممکن است برنامهٔ جداگانهای بخواهد. اجازهٔ نصب بستهٔ پایتون لزوماً به معنی اجازهٔ نصب هر نرمافزار روی سرور نیست.
همچنین بپرسید چطور محیط جدا برای بستههای پروژه ساخته میشود و تنظیمات محرمانه مثل رمز دیتابیس کجا قرار میگیرند. این رمزها را برای توضیح نیازتان در پیام عمومی یا داخل مخزن عمومی نگذارید؛ نام فناوری و روش اتصال برای سؤال اولیه کافی است.
WSGI و ASGI یعنی چه؟
این دو نام، روشهایی برای ارتباط سرور وب با برنامهٔ پایتوناند. برای مالک سایت، مهمتر از حفظ نامها این است که ورودی برنامهٔ شما با روش اجرای میزبان سازگار باشد.
اگر پروژهٔ معمول Django دارید، از توسعهدهنده نام فایل ورودی و فرمان اجرای آن را بگیرید. اگر برنامه از WebSocket استفاده میکند، مثلاً برای چت یا بهروزرسانی زنده، پشتیبانی همان نوع اتصال را هم بپرسید. اینکه صفحهٔ اول باز شود ثابت نمیکند اتصال زنده نیز از همهٔ لایههای سرور عبور میکند. روشهای انتشار Django در مستندات رسمی
برای این سؤال لازم نیست خودتان تنظیمات سرور را بنویسید. میتوانید توضیح دهید: «برنامهٔ ما علاوه بر صفحات معمول، اتصال زنده دارد؛ آیا روش اجرای پلن و محدودیت زمان اتصال آن را پوشش میدهد؟»
کار زمانبندیشده با برنامهٔ همیشهروشن فرق دارد
اگر هر شب باید یک گزارش ساخته شود، شاید یک دستور زمانبندیشده کافی باشد. به این زمانبندی در بسیاری از سرورها Cron میگویند. اما اگر پردازشگر باید دائم منتظر کارهای جدید بماند، باید بتواند همیشه اجرا شود و پس از توقف یا راهاندازی مجدد، دوباره بالا بیاید.
بازگذاشتن یک پنجرهٔ SSH روی کامپیوترتان راه مطمئنی برای ادارهٔ این کار نیست. از میزبان بپرسید برنامهٔ پسزمینه چطور مدیریت میشود، خطاهایش کجا دیده میشوند و در صورت توقف چه اتفاقی میافتد.
مصرف حافظهٔ این بخش را هم حساب کنید. اگر وبسایت و گزارشساز همزمان اجرا میشوند، هر دو از منابع استفاده میکنند. عدد مصرف روی لپتاپ فقط نقطهٔ شروع است؛ فایلهای بزرگتر و کاربران بیشتر میتوانند مصرف را تغییر دهند.
قبل از انتقال کامل، یک نمونه را امتحان کنید
روی محیط آزمایشی، صفحهٔ اصلی را باز کنید، یک درخواست وابسته به دیتابیس بفرستید و یک گزارش کوچک بسازید. ببینید گزارش واقعاً تمام میشود و نتیجه در سایت دیده میشود. سپس با روش رسمی پنل، برنامه را دوباره راهاندازی کنید و همین مراحل را تکرار کنید.
اگر صفحه باز میشود ولی گزارش هرگز آماده نمیشود، باید اجرای Worker، صف و اتصالهایش بررسی شود. اگر بعد از راهاندازی مجدد فقط وب برمیگردد، روش شروع بخش پسزمینه کامل نیست. این آزمایش کوچک پیش از انتقال مشتریان، جلوی یک دردسر بزرگتر را میگیرد.
برای برنامهای که نیازهایش داخل امکانات هاست پایتون قرار میگیرد، این سرویس میتواند مدیریت سادهتری داشته باشد. اگر چند سرویس مستقل یا نصب و تنظیمات خاص لازم دارید، سرور مجازی پایتون را هم بررسی کنید. انتخاب درست، سرویسی است که همهٔ کارهای برنامه را پوشش بدهد و معلوم باشد چه کسی از آنها نگهداری میکند.
برچسبها:
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.
مقاله بعدی
دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
