ساخت و ساز با Flask 3.0 و استفاده از Blueprint و teardown_app_request

flask 3 blueprint teardown app request
20 آبان 1403

فلکس (Flask) یکی از محبوب‌ترین فریم‌ورک‌های وب پایتون است که برای ساخت برنامه‌های وب مورد استفاده قرار می‌گیرد. با استفاده از فلکس، شما می‌توانید برنامه‌های وبی بسیار ساده اما کارآمد و قابل مقیاس‌پذیری ایجاد کنید. یکی از ویژگی‌های جذاب فلکس، استفاده از ساختارهای بلوپرینت (Blueprint) است که به شما این امکان را می‌دهد تا برنامه خود را به اجزای مستقل‌تر و قابل مدیریت‌تری تقسیم کنید.

به تازگی، فلکس نسخه 3.0 خود را معرفی کرده است. در این نسخه، ویژگی‌های جدیدی اضافه شده و بسیاری از رفتارها بهینه‌سازی شده‌اند. یکی از امکاناتی که بهبود یافته، ویژگی teardown_app_request() در بلوپرینت‌ها است. این متد به شما امکان می‌دهد که یک تابع خاص را در انتهای پردازش هر درخواست وب فراخوانی کنید. این کار در فرآیند تمیزکاری و آزاد کردن منابع بعد از هر درخواست بسیار مفید است.

در ادامه، نحوه پیاده‌سازی و استفاده از Blueprint و teardown_app_request() را در یک پروژه نمونه با فلکس 3.0 بررسی خواهیم کرد. شما خواهید دید که چگونه می‌توان از این قابلیت‌ها برای مدیریت صحیح درخواست‌ها و بهبود عملکرد برنامه استفاده نمود.

در این پروژه، ما یک برنامه ساده ایجاد می‌کنیم که شامل دو بلوپرینت مختلف برای مدیریت بخش‌های مختلف برنامه است و از teardown_app_request برای آزادسازی منابع پس از پایان هر درخواست استفاده می‌کند.

نمونه کد استفاده از Blueprint و teardown_app_request

from flask import Flask, Blueprint, request, g

# تعریف یک اپلیکیشن فلکس
app = Flask(__name__)

# ایجاد یک بلوپرینت جدید
simple_bp = Blueprint('simple', __name__)

# تعریف یک مسر در بلوپرینت
@simple_bp.route('/')
def index():
return "Hello, Flask 3.0 Blueprint!"

# استفاده از teardown در بلوپرینت
@simple_bp.teardown_app_request
def teardown_request(exception):
if exception:
print("Exception occurred: ", exception)
else:
print("Teardown request: closing resources")
# اینجا می‌توانید منابعی که برای هر درخواست باز شده‌اند ببندید

# ثبت بلوپرینت در اپلیکیشن اصلی
app.register_blueprint(simple_bp)

if __name__ == '__main__':
app.run(debug=True)

توضیح خط به خط کد

from flask import Flask, Blueprint, request, g
این خط از ماژول فلکس، کلاس‌های فلکس و بلوپرینت را برای استفاده در برنامه وارد می‌کند.
app = Flask(__name__)
این خط یک نمونه از فلکس ایجاد کرده و نام ماژول فعلی را به عنوان آرگومان ورودی می‌پذیرد.
simple_bp = Blueprint('simple', __name__)
با این خط، یک بلوپرینت جدید به نام simple ایجاد می‌کنیم.
@simple_bp.route('/')
این خط یک مسر جدید در بلوپرینت simple تعریف می‌کند که در نهایت به تابع index متصل خواهد شد.
def index():
این تابع، خروجی "Hello, Flask 3.0 Blueprint!" را برای درخواست‌های مربوط به مسیر تعریف شده ارسال می‌کند.
@simple_bp.teardown_app_request
این دکوراتور مشخص می‌کند که تابع زیر آن، به عنوان یک تابع teardown برای درخواست‌های انجام شده در بلوپرینت استفاده شود.
def teardown_request(exception):
اگر استثنایی در پردازش درخواست رخ دهد، به عنوان ورودی در این تابع ارائه می‌شود.
if exception:
بررسی می‌کند که آیا استثنایی در طول پردازش درخواست رخ داده است یا خیر.
print("Exception occurred: ", exception)
در صورت وجود استثنا، پیام مناسب را چاپ می‌کند.
else:
اگر استثنایی رخ نداده باشد، مسیر جایگزین اجرا می‌شود.
print("Teardown request: closing resources")
پیام مربوط به پایان درخواست را چاپ می‌کند و نشان‌دهنده آماده‌سازی برای آزادسازی منابع است.
app.register_blueprint(simple_bp)
این خط بلوپرینت ایجاد شده را در اپلیکیشن فلکس ثبت می‌کند.
if __name__ == '__main__':
اطمینان حاصل می‌کند که این بخش از کد تنها در صورت اجرای مستقیم فایل اجرا شود.
app.run(debug=True)
این خط اپلیکیشن فلکس را در حالت دیباگ اجرا می‌کند که برای توسعه و بررسی نیازهای پروژه مفید است.

سوالات متداول

؟

چرا از Blueprint در Flask استفاده می‌کنیم؟

؟

teardown_app_request در Flask چه کاری انجام می‌دهد؟

؟

چگونه می‌توانم مقصدهای مختلفی در Blueprint تعریف کنم؟

؟

آیا امکان استفاده از چندین Blueprint در یک برنامه Flask وجود دارد؟