نحوه راه اندازی یک برنامه API سریع با یک پایگاه داده NoSQL

مقدمه

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

پیش نیازها
  • سروری که اوبونتو را به همراه یک کاربر غیر ریشه با امتیازات sudo و فایروال فعال اجرا می کند. برای راهنمایی در مورد نحوه تنظیم این، لطفاً توزیع خود را از این لیست انتخاب کنید و راهنمای اولیه راه اندازی سرور ما را دنبال کنید. لطفاً مطمئن شوید که با نسخه پشتیبانی شده اوبونتو کار می کنید.
  • آشنایی با خط فرمان لینوکس برای معرفی یا تجدید خط فرمان، می توانید از این راهنما در پرایمر خط فرمان لینوکس دیدن کنید.
  • به‌روزرسانی sudo apt-get را در ترمینال اوبونتو اجرا کنید تا مطمئن شوید که سیستم شما آخرین نسخه‌ها و به‌روزرسانی‌های امنیتی را برای نرم‌افزارهای موجود از مخازن پیکربندی شده روی سیستم شما دارد.

مرحله 1 – محیط پایتون را روی دستگاه خود تنظیم کنید

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

python3 --version

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

sudo apt-get install python3

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

sudo apt-get install python3-pip

مرحله 2 – یک محیط مجازی ایجاد کنید

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

با شروع از Python 3.11 و pip 22.3، یک PEP 668 جدید وجود دارد که نشان‌گذاری محیط‌های پایه پایتون را به‌عنوان «مدیریت خارجی» بیان می‌کند، به این معنی که شما نمی‌توانید از pip برای نصب بسته‌ها با موفقیت استفاده کنید، مگر اینکه در یک محیط مجازی کار کنید.

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

sudo apt-get install python3-venv

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

python3 -m venv fastapi-env

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

source fastapi-env/bin/activate

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

(fastapi-env) user@machine:~$

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

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

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

بیایید با نصب Fastapi که برای ساخت برنامه FastAPI شما لازم است و Unicorn که برای اجرای برنامه FastAPI لازم است شروع کنیم.

pip install fastapi uvicorn

در این آموزش از MongoDB به عنوان پایگاه داده NoSQL استفاده خواهیم کرد. برای تعامل با MongoDB از داخل FastAPI خود، باید موتور را نصب کنید، که یک درایور Python ناهمزمان برای 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.list

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

sudo apt-get update

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

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

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

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

sudo apt-get install -y mongodb

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

sudo systemctl start mongod
sudo systemctl enable mongod

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

sudo systemctl status mongod
mongo --eval 'db.runCommand({connectionStatus: 1})'

مرحله 5 – یک برنامه FastAPI ایجاد کنید

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

nano database.py

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

from motor.motor_asyncio import AsyncIOMotorClient
MONGO_DETAILS = "mongodb://localhost:27017"
client = AsyncIOMotorClient(MONGO_DETAILS)
db = client.mydatabase
collection = db.mycollection

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

nano main.py

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

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()
# simple dataset and model
x = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])
model = LinearRegressions()
model.fit(x, y)
# define the Pydantic model for input validation
class InputData(BaseModel):
feature: float
# route_1 for predicting the output based on input feature
@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 to interact with MongoDB
@app.get("/items/")
async def get_item():
items = []
async for item in collection.find():
items.append(item)
return items
# route_3 to add a new item to MongoDB
@app.post("/items/")
async def create_item(item: dict):
new_item = await collection.insert_one(item)
created_item = await collection.fine_one({"_id": new_item.inserted_id})
return created_item

در اینجا خلاصه ای از آنچه این برنامه انجام می دهد آورده شده است:

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

مرحله 6 – برنامه FastAPI را اجرا کنید

برای اجرای موفقیت آمیز این برنامه، باید کتابخانه ها و بسته های مورد استفاده در برنامه را نصب کنید.

pip install pydantic scikit-learn numpy

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

uvicorn main:app --reload

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

Output
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.
INFO: Application startup complete.

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

می‌توانید از ابزارهایی مانند curl یا Postman برای فراخوانی نقطه پایانی که یک مقدار را بر اساس ورودی شما پیش‌بینی می‌کند، استفاده کنید.

curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'

مرحله 7 [اختیاری] – برنامه را با استفاده از Docker Compose اجرا کنید

شما می توانید برنامه خود را کانتینری کنید و آن را با استفاده از docker-compose اجرا کنید. کانتینر کردن برنامه شما، فرآیند استقرار را با تسهیل استقرار، مقیاس و نگهداری برنامه شما ساده می کند.

نتیجه

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

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

[تعداد: 1   میانگین: 5/5]
دیدگاهتان را بنویسید

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

شاید دوست داشته باشید