0

ساخت اپلیکیشن با Fast API و NoSQL

بازدید 24

مقدمه‌ای بر FastAPI و پایگاه داده NoSQL

هنگام توسعه برنامه‌های کاربردی پایتون، FastAPI به‌عنوان یک انتخاب ممتاز برای ساخت راهکارهای با عملکرد بالا مطرح می‌شود. این فریم‌ورک سرعت، سادگی و پشتیبانی از برنامه‌نویسی async را ارائه می‌دهد که آن را برای توسعه برنامه‌های کاربردی مدرن و قابل scale مناسب می‌سازد.

در این آموزش، ما شما را با فرآیند راه‌اندازی یک برنامه کاربردی FastAPI با یک پایگاه داده NoSQL راهنمایی خواهیم کرد. در زمینه ذخیره‌سازی و مدیریت داده‌ها، پایگاه‌های داده NoSQL قابلیت انعطاف‌پذیری و مقیاس پذیری را ارائه می‌دهند که آن‌ها را برای برنامه‌هایی که نیاز به مدیریت ساختارهای داده‌ای متنوع و پیچیده دارند، ایده‌آل می‌سازد.

پیش‌نیازها

قبل از شروع، شما باید مطمئن شوید که موارد زیر را دارید:

  • یک سرور با سیستم‌عامل اوبونتو به همراه یک کاربر غیر-ریشه با دسترسی‌های سودو و یک فایروال فعال. برای راهنمایی در نحوه راه‌اندازی این موارد، لطفاً از سیستم‌ توزیع خود در لیست مرتبط انتخاب کنید و دستورالعمل‌های اولیه راه‌اندازی سرور ما را دنبال کنید. لطفاً اطمینان حاصل کنید که با یک [نسخه پشتیبانی‌شده](https://releases.ubuntu.com/) از اوبونتو کار می‌کنید.
  • آشنایی با خط فرمان لینوکس.
  • اجرای دستور sudo apt-get update در ترمینال اوبونتو برای اطمینان از به‌روز بودن سیستم شما با جدیدترین نسخه‌ها و به‌روزرسانی‌های امنیتی نرم‌افزارهای موجود از مخازن تنظیم‌شده بر روی سیستم شما.



این دستورالعمل‌ها برای جدیدترین نسخه‌های اوبونتو معتبر است: اوبونتو 24.04، اوبونتو 22.04، و اوبونتو 20.04. اگر شما از نسخه‌های اوبونتو <= 18.04 استفاده می‌کنید، ما توصیه می‌کنیم که به نسخه‌ای جدیدتر ارتقاء یابید، زیرا اوبونتو دیگر پشتیبانی از این نسخه‌ها را ارائه نمی‌دهد. این مجموعه راهنماها به شما در ارتقاء نسخه اوبونتو شما کمک خواهد کرد.

گام اول – راه‌اندازی محیط پایتون بر روی دستگاه شما

طی این آموزش، از بسته python3 برای اجرای دستورات استفاده خواهیم کرد. نسخه‌های اخیر اوبونتو با نصب پایتون 3 می‌آیند، بنابراین برای تأیید نصب آن، دستور زیر را اجرا کنید:

python3 --versionCode language: Python (python)

در صورتی که این دستور خطایی بازگرداند، شما می‌توانید بسته را با اجرای دستور زیر نصب یا مجدداً نصب کنید:

sudo apt-get install python3Code language: Bash (bash)

بعد از آن، شما نیاز دارید تا pip را برای نصب بسته‌های پایتون و وابستگی‌های آن‌ها به شیوه‌ای ایمن نصب کنید.

sudo apt-get install python3-pipCode language: Bash (bash)

گام دوم – ایجاد محیط مجازی



اگر شما از نسخه اوبونتو < 24.04 استفاده می‌کنید، شما نیازی به ایجاد محیط مجازی ندارید اما انجام این کار به‌عنوان یک تمرین خوب برای ایزوله کردن وابستگی‌های پروژه شما محسوب می‌شود.


آموزش گام به گام ایجاد برنامه با FastAPI – قسمت 2

مرحله 2 – ایجاد محیط مجازی (Virtual Environment)

در این مرحله، شما یک محیط مجازی برای پروژه‌تان ایجاد خواهید کرد که وابستگی‌های پروژه‌تان را از هم جدا کرده و از تعارضات احتمالی بین نسخه‌های متفاوت پکیج‌ها جلوگیری می‌کند. دستورات زیر را در ترمینال اجرا کنید:

sudo apt-get install python3-venvCode language: JavaScript (javascript)

این دستور پکیج مورد نیاز venv را برای ایجاد محیط مجازی نصب می‌کند.

python3 -m venv fastapi-env

این دستور یک محیط مجازی به نام fastapi-env در دایرکتوری کاری شما ایجاد می‌کند. برای شروع کار در این محیط، باید آن را فعال کنید.

source fastapi-env/bin/activate

پس از اجرای موفقیت‌آمیز، پرامپت ترمینال به این شکل خواهد بود:

(fastapi-env) user@machine:~$

اکنون می‌توانید شروع به نصب وابستگی‌های مورد نیاز داخل این محیط مجازی کنید.

مرحله 3 – نصب کتابخانه‌ها و پکیج‌های مورد نیاز

در این مرحله، شما چند پکیج و کتابخانه را نصب خواهید کرد که برای دنبال کردن این آموزش لازم هستند.

کار را با نصب fastapi آغاز می‌کنیم که برای ساخت برنامه FastAPI شما لازم است و uvicorn که برای اجرا کردن برنامه FastAPI نیاز است.

pip install fastapi uvicorn

در این آموزش، ما از MongoDB به عنوان پایگاه داده NoSQL استفاده خواهیم کرد. برای برقراری ارتباط با MongoDB از درون برنامه FastAPI شما، باید motor که یک درایور اسنکرون پایتون برای MongoDB است را نصب کنید.

pip install motor

مرحله 4 – نصب و راه‌اندازی MongoDB روی اوبونتو

برای نصب MongoDB روی دستگاه اوبونتو خود، دستورات زیر را در ترمینال اجرا کنید:

wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.listCode language: Bash (bash)

پس از اجرای موفقیت‌آمیز، این دستور پارامتر echo را بر می‌گرداند. اکنون، یک بروزرسانی سریع انجام دهید:

sudo apt-get updateCode language: Bash (bash)

این کار اطمینان حاصل می‌کند که پس از تنظیم کلیدهای MongoDB، آخرین بروزرسانی‌ها را دریافت کنید.

بعدی، نیاز است که وابستگی openssl را روی سیستم خود نصب کنید که برای نصب MongoDB لازم است.

<code data-shcb-language-name="bash">wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb

sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb</code>Code language: Bash (bash)

پس از اجرا، از شما خواسته می‌شود که سرویس‌ها را مجددا راه‌اندازی کنید.گام پنجم – ایجاد برنامه FastAPI

پس از راه‌اندازی مجدد، MongoDB را با استفاده از دستور زیر نصب کنید:

sudo apt-get install -y mongodbCode language: Bash (bash)

سرویس‌های MongoDB را شروع و فعال کنید:

sudo systemctl start mongod

sudo systemctl enable mongodCode language: Bash (bash)

می‌توانید وضعیت سرویس MongoDB را بررسی کرده و اتصال را با اجرای دستورات زیر تست کنید:

sudo systemctl status mongod
 <code data-shcb-language-name="bash">mongo --eval 'db

runCommand({connectionStatus: 1})'</code>Code language: Bash (bash)

گام ۵ – ایجاد برنامه FastAPI

مرحله بعدی ایجاد یک برنامه FastAPI است.
در پوشه‌ی کاری خود، فایلی به نام database.py بسازید:

<code data-shcb-language-name="bash">nano database.py</code>Code language: HTML, XML (xml)

این کار یک ویرایشگر متنی خالی را باز می‌کند.
شما باید منطق اتصال دیتابیس خود را در این‌جا بنویسید.

from motor.motor_asyncio import AsyncIOMotorClient
MONGO_DETAILS = "mongodb://localhost:27017"
<code data-shcb-language-name="python">client = AsyncIOMotorClient(MONGO_DETAILS)db = client.mydatabasecollection = db.mycollection</code>
Code language: Python (python)

با فرض اینکه mycollection در mydatabase با داده‌هایی پر شده است، حالا شما یک فایل main.py ایجاد می‌کنید که منطق برنامه‌ی شما در آن قرار دارد.
در برنامه‌ی FastAPI زیر، اتصال به دیتابیس با استفاده از database.py برقرار شده و مسیرهایی برای پیش‌بینی هوش مصنوعی تعریف می‌شود.
با استفاده از این مسیرها، ورودی‌ها اعتبارسنجی می‌شوند.

nano main.pyCode language: CSS (css)

در ویرایشگر متن، منطق را بنویسید:

from fastapi import FastAPI, HTTPException

from pydantic import BaseModel

from sklearn.linear_model import LinearRegression

import numpy as np

from database import collection

app = FastAPI()

# داده‌ها و مدل ساده
 x = np.array([[1], [2], [3], [4], [5]])
 y = np.array([2, 4, 6, 8, 10])

model = LinearRegressions()
 model.fit(x, y)

# تعریف مدل Pydantic برای اعتبارسنجی ورودی
 class InputData(BaseModel):
 feature: float

# route_1 برای پیش‌بینی خروجی بر اساس ویژگی ورودی
 @app.post("/predict/")
 async def predict(input_data: InputData):
 try:
 prediction = model.predict([[input_data.feature]])
 return {"prediction": prediction[0]}
 except Exception as ex:
 raise HTTPException(status_code=400, detail=str(ex))

# route_2 برای تعامل با MongoDB
 @app.get("/items/")
 async def get_item():
 items = []
 async for item in collection.find():
 items.append(item)
 return items

<code data-shcb-language-name="python"># route_3 برای اضافه کردن یک آیتم جدید به MongoDB

@app.post("/items/")

async def create_item(item: dict):

  new_item = await collection.insert_one(item)

  created_item = await collection.find_one({"_id": new_item.inserted_id})

  return created_item

</code>
Code language: Python (python)

در زیر توضیحی در مورد کارکردهای این برنامه آورده شده است:

  • مدل رگرسیون خطی از sklearn: این مدل بر اساس یک ویژگی ورودی، خروجی پیش‌بینی‌شده‌ای تولید می‌کند.
  • InputData از مدل Pydantic: این ساختار ورودی مورد انتظار برای نقطه پایانی پیش‌بینی را تعریف می‌کند. در این مورد، یک float.
  • مسیرهای MongoDB: مسیرها `/items/` و `POST /items/` به شما اجازه می‌دهند تا مواردی را از مجموعه MongoDB خود بازیابی کنید یا در آن قرار دهید.

گام ششم – اجرای برنامه FastAPI

گام ششم – اجرای برنامه FastAPI

برای اینکه این برنامه با موفقیت اجرا شود، نیاز است کتابخانه‌ها و بسته‌های مورد استفاده در برنامه نصب شوند:

pip install pydantic scikit-learn numpy

اکنون، برای اجرای این برنامه از دستور زیر استفاده کنید:

uvicorn main:app --reloadCode language: CSS (css)

خروجی این دستور خواهد بود:



INFO:     Will watch for changes in these directories: ['/path/to/your/project']

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

INFO:     Started reloader process [XXXXX] using statreload

INFO:     Started server process [XXXXX]

INFO:     Waiting for application startup<code data-shcb-language-name="console">
</code>INFO:     Application startup complete

Code language: HTML, XML (xml)

FastAPI به طور خودکار مستندات API تعاملی را با استفاده از Swagger UI تولید کرده است. شما می‌توانید با مراجعه به آدرس http://127.0.0.1:8000/docs به آن دسترسی پیدا کنید.

می‌توانید از ابزارهایی مثل curl یا Postman برای فراخوانی endpoint که یک مقدار را بر اساس ورودی شما پیش‌بینی می‌کند، استفاده کنید:

curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'Code language: JavaScript (javascript)

گام هفتم [اختیاری] – اجرای برنامه با استفاده از Docker Compose

شما می‌توانید برنامه خود را کانتینر (Containerize) کرده و با استفاده از docker-compose آن را اجرا کنید. کانتینر برنامه‌تان فرآیند استقرار را به وسیله تسهیل استقرار، توسعه و نگهداری برنامه، بهینه می‌سازد. جهت تعریف برنامه‌تان به صورت Dockerfile، مراحل ذکر شده در بخش استقرار برنامه FastAPI با استفاده از Docker Compose را دنبال کنید.

نتیجه‌گیری

در این آموزش، شما نحوه راه‌اندازی موفقیت‌آمیز یک برنامه FastAPI با MongoDB را یاد گرفتید که یک برنامه ساده مبتنی بر هوش مصنوعی قادر به ذخیره‌سازی و بازیابی پیش‌بینی‌های ورودی می‌باشد.

ترکیب FastAPI و یک پایگاه داده NoSQL، محیطی قدرتمند و انعطاف‌پذیر برای ساخت و مقیاس‌بندی برنامه‌های مبتنی بر هوش مصنوعی را فراهم می‌کند.

نظرات کاربران

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

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