اگر تا به امروز مقاله‎‌های مجله هم‌رویش را دنبال کرده باشید، خاطرتان هست که پیش از این در یک مقاله به مقایسه فریمورک flask با جنگو (+) پرداخته‌ایم. آیا با فریمورک FastAPI آشنا هستید؟ همانطور که از عنوان مقاله مشخص است، در این مقاله قصد داریم خیلی سریع به مقایسه Flask و FastAPI بپردازیم. مثل همیشه با ما همراه باشید.

فهرست مطالب

مقدمه

دانشمندان علم داده نباید تنها به ساختن مدل اکتفا کنند، بلکه باید برای قدم بعدی یعنی گسترش مدل، تلاش کنند. با گسترش مدل می‌توان نتایج نهایی را به دیگران (یا کلاینت‌ها) نشان داد.

این گروه از افراد ممکن است کدنویسی را درک نکنند و با مشاهده آن، متوجه کدها نشوند. آن‌ها ترجیح می‌دهند اپلیکیشن نهایی را در پایان ببینند.

 

 

هم رویش منتشر کرده است:

آموزش NumPy --- دانشمند داده شوید!

 

 

در راستای همین موضوع، آن‌ها می‌توانند فوراً نتایج را مشاهده کنند. رویکرد رایجی که وجود دارد، این است که کدهای خود را در یک Rest API قرار دهید و آن‌ها را به عنوان یک میکروسرویس گسترش دهید.

 

مقایسه-Flask-و-FastAPI-هم-رویش

 

در این مقاله، به معرفی دو فریمورک مختلف می‌پردازیم. این دو می‌توانند به سرعت وب سرورها را راه‌اندازی کنند.

 

فریمورک‌های Flask و FastAPI

Flask و FastAPI فریمورک‌هایی هستند که برای ساختن وبسایت‌ها و اپلیکیشن‌ها در مقیاس کوچک استفاده می‌شوند.

 

فریمورک Flask

Flask در سال 2010 منتشر شد. یک میکرو فریمورک وب، که به زبان پایتون نوشته شده است. فلسک از ایجاد اپلیکیشن‌های وب با حداقل مقدار کد، پشتیبانی می‌کند.

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

پیش از این آموزش پروژه محور flask در هم‌رویش منتشر شده است. پیشنهاد می‌کنم فیلم معرفی این آموزش را در زیر ببینید:

 

 

برای دریافت بسته کامل آموزش پروژه محور Flask کلیک کنید(+).

 

مثال زیر نمونه‌ای از برنامه‌ای است که با استفاده از فریمورک Flask نوشته شده است ( نمونه‌ای از استفاده متد (GET) برای دریافت ورودی‌های کاربر و درج مقادیر در Google Big Query است. این مثال در Google Cloud Run انتشار یافته است).

 

from flask import Flask, request, make_response, jsonify
import pandas as pd
import gcsfs
from google.cloud import bigquery
from google.oauth2 import service_account
import pandas_gbq
import os
app = Flask(__name__)
app.config["DEBUG"] = True #If the code is malformed, there will be an error shown when visit app
@app.route("/books", methods=["GET"])
def books_table_update():
    Title = request.args.get('title', None)
    Author = request.args.get('author', None)
    input_table = {'book_title':[Title],'book_author':[Author]}
    input_table = pd.DataFrame(input_table)
    input_table["book_title"]= input_table["book_title"].map(str)
    input_table["book_author"]= input_table["book_author"].map(str)
    #Push table to Google Big Query
    client = bigquery.Client()
    project_id = 'sue-gcp-learning-env'
    table_id = 'Books.books_title_author'
    pandas_gbq.to_gbq(input_table, table_id, project_id=project_id, if_exists='append')
    return "Table books_title_author has been Updated"

پس از اتمام انتشار با Flask، می‌توانید URL را اجرا کنید. ورودی را در URL ارسال کنید و سپس یک پیام بازگردانده می‌شود.

 

مقایسه-Flask-و-FastAPI-هم-رویش
فراخوانی یک میکروسرویس گسترش یافته با استفاده از Flask

 

فریمورک FastAPI

FastAPI در مقایسه با Flask جدیدتر است و در سال 2018 منتشر شد. این فریمورک مانند Flask کار می‌کند. همچنین از توسعه اپلیکیشن‌های وب با حداقل مقدار کد پشتیبانی می‌کند.

با این حال FastAPI در مقایسه با Flask سریع‌تر است. زیرا بر روی ASGI (Asynchronous Server Gateway Interface) ساخته شده است؛ که به موجب آن از کدهای همروند یا ناهمروند پشتیبانی می‌کند. این کار با اعلان نقاط پایانی (end points) با سینتکس async def انجام می‌شود.

 

 

هم رویش منتشر کرده است:

آموزش FastAPI در ۱۱۰ دقیقه -- شروع سریع

 

ویژگی که FastAPI را برجسته می‌کند، مستندات است. به محض انتشار با استفاده از فریمورک FastAPI ، مستندات ایجاد خواهند شد. همچنین یک رابط کاربری گرافیکی تعاملی (Swagger UI) ایجاد می‌کند که به وسیله آن، توسعه‌دهندگان می‌توانند نقاط پایانی (End pointهای) API را راحت‌تر تست کنند.

مثال زیر نمونه‌ای از انتشار برنامه‌ای با استفاده از FastAPI است ( نمونه‌ای از استفاده از متد (GET) برای دریافت ورودی‌های کاربر و درج مقادیر در Google Big Query است. این مثال در Google Cloud Run انتشار یافته است).

 

import uvicorn
from fastapi import FastAPI
import pandas as pd
import gcsfs
from google.cloud import bigquery
from google.oauth2 import service_account
import pandas_gbq
import os
app = FastAPI()
@app.get("/books_title/{book_title}/author/{author}")
async def books_table_update(books_title: str, author: str ):
    
    Title = books_title
    Author = author
    input_table = {'book_title':[Title],'book_author':[Author]}
    input_table = pd.DataFrame(input_table)
    input_table["book_title"]= input_table["book_title"].map(str)
    input_table["book_author"]= input_table["book_author"].map(str)
    #Push table to Google Big Query
    client = bigquery.Client()
    project_id = 'sue-gcp-learning-env'
    table_id = 'Books.books_title_author'
    pandas_gbq.to_gbq(input_table, table_id, project_id=project_id, if_exists='replace')
                                                                              return "Table books_title_author has been Updated"

پس از اتمام انتشار با FastAPI، می‌توانید URL را اجرا کنید. ورودی را به URL ارسال کنید. سپس پیامی بازگردانده می‌شود که مشابه با Flask عمل می‌کند.

 

مقایسه-Flask-و-FastAPI-هم-رویش
فراخوانی یک میکروسرویس با استفاده از FastAPI

 

قابلیت اضافی که باعث علاقه توسعه‌دهندگان به فریمورک FastAPI شده است؛ ایجاد داکیومنت‌ها به صورت خودکار است Swagger UI)). برای دسترسی به Swagger UI ،API endpoint /docsرا بنویسید و وارد آن شوید. در واقع یک GUI تعاملی برای آزمایش نقاط پایانی API است. با وجود UI Swagger، می‌توانید برنامه خود را برای دیگران نیز آسان‌تر توضیح دهید.

 

FastAPI — Swagger UI

 

با استفاده از Swagger UI، می‌توانید به راحتی نقاط پایانی API خود را تست کنید. همچنین پارامترها را از طریق اینترفیس مشخص کنید. به عنوان مثال، در تصویر زیر به راحتی می‌توانید «عنوان کتاب» و «نویسنده» را در ستون ارائه شده، مشخص کنید.

 

تست « GET request» از Swagger UI

 

به غیر از Swagger UI ،FastAPI با اسناد دیگری مانند “ReDoc” نیز ارائه می‌شود. این مستندات شامل تمام نقاط پایانی فهرست شده است. این ویژگی، در صورت وجود نقاط پایانی بسیاری در یک سرویس مشابه مفید است. برای دسترسی به صفحه مستندات، API endpoint /redoc را وارد کنید.

 

FastAPI — ReDoc

 

مقایسه Flask و FastAPI

متدهای HTTP:

 

متدهای HTTP

 

  • تعیین متد ” ” GET یا ” ” POST در Flask و FastAPI متفاوت است.

 

ارسال پارامترها و اعتبارسنجی داده‌ها:

 

استفاده از متد Get

 

  • Flask برای داده‌ها اعتبارسنجی ارائه نمی‌دهد. به این معنی که کاربر می‌تواند هر نوع داده‌ای مانند رشته یا عدد صحیح و غیره را ارسال کند (در عوض یک اسکریپت اعتبارسنجی، بر روی داده‌های ورودی دریافتی می‌تواند در اسکریپت ساخته شود. اما به طبع برای این کار به تلاش بیشتری نیاز است).
  • FastAPI به توسعه‌دهندگان اجازه می‌دهد تا معیار و اعتبارسنجی‌های اضافی را بر روی پارامتر دریافتی، شناسایی کنند.

 

نمایش پیغام‌های خطا:

 

پیغام خطا در Flask و FastAPI

 

نمایش پیغام‌های خطا در Flask به طور پیش‌فرض، صفحات HTML هستند. اما در FastAPI پیام‌های خطای نمایش داده شده با فرمت JSON هستند.

 

تسک‌های ناهمزمان (Asynchronous Tasks):

 

مقایسه همروندی و ناهمروند بودن تسک‌ها

 

فلسک از عوامل ناهمروند پشتیبانی نمی‌کند. این در صورتی است که FastAPI  از تسک‌های همروند پشتیبانی می‌کند.

 

نتیجه‌:

پس از بررسی و آشنایی با Flask و FastAPI، شاید انتخابتان به FastAPI تغییر کند. زیرا توابعی که این فریمورک ارائه می­‌دهد، به‌گونه‌ای غیرهمزمان اجرا می‌شوند. همچنین ویژگی ایجاد داکیومنت‌های دقیق و کامل به صورت خودکار را دارد.

نکته‌‌ای را هم که باید در نظر داشته باشید این است که زحمت و تلاش مورد نیاز برای گسترش با استفاده از FastAPI مانند Flask است.

اگر همیشه از Flask استفاده می‌کنید، می‌توانید FastAPI را نیز امتحان کنید و تفاوت میان آن‌ها را درک کنید.

 

ممنون که تا انتهای مقاله با ما همراه بودید. سوال؟

در مجله هم‌رویش بیشتر پیگیر چه مقاله‌هایی هستید؟ آیا این مقاله برای شما مفید بود؟ نظرات و پیشنهادات خود را در جهت رشد هم‌رویش و خودتان در قسمت نظرات این مقاله با ما به اشتراک بگذارید.

 

کلیدواژگان

مقایسه Flask و FastAPI | تفاوت Flask با FastAPI | فریمورک FastAPI | مقایسه فریمورک Flask و FastAPI | فلسک یا فست ای پی آی

 

منبع

Understanding Flask vs FastAPI Web Framework

دوره های آموزشی مرتبط

نویسنده :

سئو و ویراستاری :

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Search

مطالب مرتبط

دسته بندی مطالب

دوره-رایگان-یادگیری-ماشین-کتاب-یادگیری-ماشین-ژرون-Aurelien-Geron-هم-رویش
یادگیری ماشین رایگان ــ تندخوانی کتاب جرون