با سلام! امروز میخواهیم درباره یک متد جدید و کاربردی در فریمورک Flask صحبت کنیم. این متد، call_on_close() نام دارد و در نسخه 3.0 به این فریمورک اضافه شده است. اول از همه باید بگوییم که Flask یکی از محبوبترین فریمورکها برای توسعه وباپلیکیشن در زبان پایتون است. این متد تازه وارد، امکان اضافهکردن عملکردهایی را پس از بستهشدن یک درخواست فراهم میکند.
بنابراین، فرض کنید یک اپلیکیشن وب داریم که نیاز داریم پس از تکمیل درخواست یک کار خاص انجام دهیم، مانند ثبت اطلاعات در یک دیتابیس یا انجام محاسبات نهایی. با استفاده از call_on_close() میتوانیم این کارها را به راحتی و بدون نیاز به اضافهکردن کدهای بیشتر در قسمتهای دیگر انجام دهیم.
این متد به ما اجازه میدهد تا بتوانیم توابعی را به لیست توابعی که بعد از بستهشدن درخواست اجرا میشوند، اضافه کنیم. این چیزی شبیه به یک Callback است که پس از پایان چرخه زندگی یک درخواست Flask اجرا میشود. میتوان گفت وجود این متد کار توسعهدهندگان را بسیار راحتتر کرده است.
چطور از call_on_close() استفاده کنیم؟
حالا که میدانیم call_on_close() چیکار میکند، بریم سراغ نحوه استفاده از آن. در مثال زیر، یک اپلیکیشن ساده Flask خواهیم ساخت و از این متد استفاده خواهیم کرد تا پس از هر درخواست، پیغامی را در کنسول چاپ کنیم.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "سلام به Flask!"
# تعریف تابعی که پس از بستهشدن درخواست اجرا خواهد شد
def after_request():
print("درخواست تکمیل شد!")
# اضافه کردن تابع به call_on_close
app.call_on_close(after_request)
if __name__ == '__main__':
app.run(debug=True)
توضیح خط به خط درباره کد
from flask import Flask
ابتدای کد، Flask را از ماژول flask وارد میکنیم.
app = Flask(__name__)
یک مثال از کلاس Flask را ایجاد میکنیم که به عنوان اپلیکیشن ما عمل میکند.
@app.route('/'):
این دکوراتور مسیر اصلی اپلیکیشن را تعریف میکند، یعنی وقتی که بر روی URL اصلی کلیک میشود، این تابع اجرا خواهد شد.
def home():
این تابع به سادگی یک پاسخ متنی برمیگرداند.
def after_request():
این تابع بعد از بستهشدن هر درخواست اجرا میشود و پیغامی را در کنسول چاپ میکند.
app.call_on_close(after_request)
در این خط تابع 'after_request' را به لیست توابعی که باید پس از بستهشدن درخواست اجرا شوند، اضافه میکنیم.
app.run(debug=True)
در نهایت، اپلیکیشن را با حالت دیباگ اجرا میکنیم.