
پلتفرم Flask
(Flask Platform)🎯 توضیحات و نکات تکمیلی
فهرست عناوین:
- انتخاب نسخهی Python
- تنظیم منطقهی زمانی (TimeZone)
- افزایش زمان تایماوت Gunicorn
- تنظیمات Nginx
- افزایش محدودیت حجم آپلود فایل
- رفع خطای CORS
- غیرفعال کردن Mirror
- تعیین نام ماژول
انتخاب نسخهی Python
بهصورت پیشفرض برنامهی شما روی Python 3.8 اجرا میشود. در صورتی که قصد دارید نسخه دیگری را برای اجرای برنامهیتان استفاده کنید میتوانید داخل فایل liara.json بخش زیر را اضافه کنید. توجه داشته باشید که فایل liara.json را باید در کنار فایل requirements.txt بسازید:
{
"flask": {
"pythonVersion": "3.11"
}
}
- 3.7
- 3.8
- 3.9 (پیشفرض)
- 3.10
- 3.11
تنظیم منطقهی زمانی (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 برنامه را افزایش دهید.

تنظیمات Nginx
در برنامههای Flask لیارا از وبسرور Nginx استفاده میشود و پیکربندی پیشفرض این وبسرور بهشکل زیر است:
location /public {
alias /usr/src/app/public;
}
location / {
try_files /dev/null @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 /public {
alias /usr/src/app/public;
}
location / {
try_files /dev/null @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 /public {
alias /usr/src/app/public;
}
location / {
try_files /dev/null @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
}
}
تعیین نام ماژول
درصورتی که از نام دیگری بهجز app و app.pyبهعنوان نام ماژول اصلی برنامهتان استفاده کرده باشید نیاز هست یک فایل با نام liara.json در مسیر اصلی پروژهتان ایجاد کرده و بهشکل زیر ماژول اصلی برنامهتان را تعیین کنید:
{
"flask": {
"appModule": "FILE_NAME:FLASK_INSTANCE"
}
}
برای مثال درصورتی که Flask instance با نام app در فایل server.py تعریف کرده باشید:
import os
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template('index.html')
باید بهشکل زیر نام ماژول را در فایل liara.jsonتعیین کنید:
{
"flask": {
"appModule": "server:app"
}
}