پرش به مطلب اصلی

نکات تکمیلی Django


در این بخش می خواهیم نکات تکمیلی Django را در هاست جنگو به شما آموزش دهیم.

استقرار برنامه‌های ASGI​

برای استقرار برنامه های ASGI نیاز هست تا متغییر محیطی ASGI_PATH را از طریق تنظیمات سرویس با مسیر فایل asgi.py مقدار دهی نمایید.

ASGI_PATH=core.asgi:application

رفع مشکل AppRegistryNotReady در برنامه های ASGI​

برای رفع این مشکل در برنامه های ASGI کافیست کد زیر را در ابتدا فایل asgi.py (قبل از import ها) برنامه خودتان قرار دهید.

import django
django.setup()

افزایش زمان تایم‌اوت Gunicorn​

درصورتی که در سرویس خود با خطای CRITICAL WORKER TIMEOUT مواجه شده‌اید و به WORKER TIMEOUT بیشتر از ۳۰ ثانیه نیاز دارید می‌توانید وارد تنظیمات سرویس خود شده و در بخش متغیرها، متغیر GUNICORN_TIMEOUT با مقدار موردنظر خود مقدار دهی کنید.

# name : value
GUNICORN_TIMEOUT:90

افزایش تعداد ورکر Gunicorn​

درصورتی که می خواهید Gunicorn با بیش یک Worker کار کند، می‌توانید وارد تنظیمات سرویس خود شده و در بخش متغیرها، متغیر GUNICORN_WORKERS با مقدار موردنظر خود مقدار دهی کنید.

# name : value
GUNICORN_WORKERS:2

افزایش تعداد Gunicorn thread​

درصورتی که می خواهید Gunicorn با بیش یک thread کار کند، می‌توانید وارد تنظیمات سرویس خود شده و در بخش متغیرها، متغیر GUNICORN_THREADS با مقدار موردنظر خود مقدار دهی کنید.

# name : value
GUNICORN_THREADS:2

تغییر سطح لاگ Gunicorn​

درصورتی که می خواهید سطح لاگ های Gunicorn تغییر دهید، می‌توانید وارد تنظیمات سرویس خود شده و در بخش متغیرها، متغیر GUNICORN_LOG_LEVEL با مقدار موردنظر خود مقدار دهی کنید.

# name : value
GUNICORN_LOG_LEVEL:info

تغییر نوع Worker در Gunicorn​

درصورتی که می‌خواهید نوع Worker مورد استفاده در Gunicorn را تغییر دهید (برای مثال استفاده از gevent، eventlet یا uvicorn workers)، می‌توانید وارد تنظیمات سرویس خود شده و در بخش متغیرها، متغیر GUNICORN_WORKER_CLASS را با مقدار موردنظر مقداردهی کنید.

# name : value
GUNICORN_WORKER_CLASS:gevent

افزایش تعداد ارتباطات Worker در Gunicorn​

اگر از workerهای asynchronous مانند gevent یا eventlet استفاده می‌کنید و نیاز دارید که تعداد اتصال‌های همزمان بیشتری توسط هر worker مدیریت شود، می‌توانید با تنظیم متغیر GUNICORN_WORKER_CONNECTIONS مقدار موردنظر خود را مشخص کنید.

# name : value
GUNICORN_WORKER_CONNECTIONS:1000

محدود کردن تعداد درخواست‌ها برای هر Worker در Gunicorn​

برای جلوگیری از افزایش مصرف حافظه (Memory Leak) یا تنظیم رفتار چرخش Workerها، می‌توانید تعداد درخواست‌هایی که هر worker قبل از ریست شدن پردازش می‌کند را با متغیر GUNICORN_MAX_REQUESTS مشخص کنید. با مقداردهی این متغیر، پس از رسیدن به سقف تعیین‌شده، worker به‌صورت کنترل‌شده ریست می‌شود.

# name : value
GUNICORN_MAX_REQUESTS:500

رفع مشکل CSRF Token​

در برنامه های Django برای رفع مشکل CSRF Token می بایست متغییر CSRF_TRUSTED_ORIGINS را در فایل settings.py با آدرس دامنه ای که استفاده می کنید مقدار دهی نمایید.

CSRF_TRUSTED_ORIGINS = ["https://test.chbk.run"]

رفع مشکل ALLOWED HOSTS​

در برنامه های Django برای رفع مشکل ALLOWED HOSTS می بایست متغییر ALLOWED_HOSTS را در فایل settings.py با آدرس دامنه ای که استفاده می کنید مقدار دهی نمایید.

ALLOWED_HOSTS = ["https://test.chbk.run"]

رفع مشکل لود نشدن فایل های static​

در برنامه های Django برای رفع مشکل لود نشدن فایل های static لازم است مسیر static و media را در فایل settings.py برنامه خودتان به صورت صحیح معرفی کنید.

MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'


STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'

کش کردن پکیج ها​

برای فعال نمودن سیستم کشینگ پکیج های سرویس میتوانید متغیر زیر را در بخش تنظیمات سرویس، متغیر های محیطی پلتفرم ست نمایید. اینکار باعث سرعت بخشیدن به روند استارت و ری استارت سرویس می شود.

# name = value
CHBK_PYTHON_SAVE=true

تنظیم متغیرهای محیطی در سرویس Django چابکان

اتصال دامنه به سرویس Django​

برای اتصال دامنه به سرویس جنگو می بایست در فایل .env سرویس دامنه اصلی خود را وارد نمایید.

SITE_URL=example.com

استفاده از کتابخانه crontab​

شما باید یک فایل با نام cron-jobs در سرویس ایجاد کنید و دستور زیر درون اون قرار بدید و سپس یکبار سرویس را ریستارت کنید تا کرون ها اجرا شوند:

/usr/local/bin/python3 /app/manage.py crontab run ######## >> /app/mylog.log 2>&1

تغییر ورژن Django​

در صورتی که قصد دارید ورژن python خود را تغییر دهید، می‌توانید در قسمت تنظیمات سرویس خود، ورژن Django سرویس خود را تغییر دهید. بعد از انتخاب ورژن بر روی ذخیره ی تغییرات کلیک نمایید.

نسخه‌های Python
  • 3.6
  • 3.7
  • 3.8
  • 3.9
  • 3.10
  • 3.11
  • 3.12

تغییر ورژن سرویس Django چابکان

تغییر میرور​

برای تغییر میرور پکیج‌های Python می‌توانید مقدار PIP_INDEX_URL را در متغیرهای محیطی (env) با آدرس سرور دلخواه تنظیم کنید.

env
PIP_INDEX_URL=https://mirror2.chabokan.net/pypi/simple/

تغییر DNS​

برای اطلاع از نحوه تغییر DNS به این مستند مراجعه کنید.


خرید سرویس ابری Django از چابکان