ارائه دهنده خدمات ابری PaaS و DBaaS

flask

پلتفرم Flask

(Flask Platform)

🎯 توضیحات و نکات تکمیلی

فهرست عناوین:

انتخاب نسخه‌ی Python

به‌صورت پیش‌فرض برنامه‌ی شما روی Python 3.8 اجرا می‌شود. در صورتی که قصد دارید نسخه دیگری را برای اجرای برنامه‌ی‌تان استفاده کنید می‌توانید داخل فایل liara.json بخش زیر را اضافه کنید. توجه داشته باشید که فایل liara.json را باید در کنار فایل requirements.txt بسازید:

{
  "flask": {
    "pythonVersion": "3.7"
  }
}

  • 3.7
  • 3.8
  • 3.9
  • 3.10

تنظیم منطقه‌ی زمانی (TimeZone)

به صورت پیش‌فرض، منطقه‌ی زمانی بر روی Asia/Tehran تنظیم شده است. برای تغییر مقدار پیش‌فرض، می‌توانید از پارامترtimezoneدر فایل liara.json استفاده کنید. برای نمونه:

{
  "app": "flask-starter",
  "flask": {
    "timezone": "America/Los_Angeles"
  }
}

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

درصورتی که در برنامه‌ی Flask خود با خطای [CRITICAL] WORKER TIMEOUT مواجه شده‌اید و به WORKER TIMEOUT بیشتر از ۳۰ ثانیه نیاز دارید می‌توانید وارد تنظیمات برنامه‌ی Flask خود شده و در بخش متغیرها، متغیر GUNICORN_TIMEOUT=60 را به‌شکل زیر اضافه کرده و درنهایت با کلیک بر روی دکمه ثبت تغییرات، WORKER TIMEOUT برنامه را افزایش دهید.

توجه داشته باشید که متغیر GUNICORN_TIEMOUT براساس ثانیه است.

تنظیمات Nginx

در برنامه‌های Flask لیارا از وب‌سرور Nginx استفاده می‌شود و پیکربندی پیش‌فرض این وب‌سرور به‌شکل زیر است:

location / {
  try_files $uri @flask_app;
}

location ~\.sqlite3$ {
  deny all;
  error_page 403 =404 /;
}

location ~ /\.well-known {
  allow all;
}

حال شما می‌توانید یک فایل با نام liara_nginx.confدر مسیر اصلی پروژه‌ی خود ایجاد کرده و پیکربندی وب‌سرور Nginx را متناسب با نیاز خود تغییر دهید. برای مثال، برای فعال‌کردن فشرده‌سازیgzipمی‌توانید به‌شکل زیر عمل کنید:

gzip             on;
gzip_disable     "msie6";
gzip_vary        on;
gzip_proxied     any;
gzip_comp_level  6;
gzip_types       text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;

location / {
  try_files $uri @flask_app;
}

location ~\.sqlite3$ {
  deny all;
  error_page 403 =404 /;
}

location ~ /\.well-known {
  allow all;
}

افزایش محدودیت حجم آپلود فایل

حداکثر حجم مجاز آپلود فایل در وب‌سرور Nginx به‌صورت پیش‌فرض 1MB در نظر گرفته شده است. برای تغییر این مقدار کافیست یک فایل با نام liara_nginx.conf در مسیر اصلی پروژه‌ی خود ایجاد کنید و مقدار client_max_body_size را براساس نیاز خود تنظیم کنید:

client_max_body_size 250M;

location / {
  try_files $uri @flask_app;
}

location ~\.sqlite3$ {
  deny all;
  error_page 403 =404 /;
}

location ~ /\.well-known {
  allow all;
}

رفع خطای CORS

درصورتی که پس نصب و پیکربندی پکیج Flask-Cors با خطای CORS مواجه شده‌اید باید صحت resources را مورد بررسی قرار دهید:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app, resources={r"/*": {"origins": "*"}})

@app.route("/")
def helloWorld():
  return "Hello, cross-origin-world!"

غیرفعال کردن Mirror

Mirror اختصاصی لیارا به‌منظور دانلود سریع‌تر پکیج‌ها در پلتفرم Flask به‌صورت پیش‌فرض فعال است اما شما می‌توانید با قرار دادن قطعه‌کد زیر در فایل liara.json، این قابلیت را غیر فعال کنید:

{
  "flask": {
    "mirror": false
  }
}