NoSQL veritabanıyla hızlı bir API uygulaması nasıl başlatılır

0 Hisse senetleri
0
0
0
0

giriiş

Python uygulamaları geliştirirken, FastAPI yüksek performanslı çözümler oluşturmak için en iyi seçenek olarak öne çıkıyor. Hız, basitlik ve eşzamansız programlama desteği sunarak modern ve ölçeklenebilir uygulamalar geliştirmek için ideal hale getiriyor. Bu eğitim, NoSQL veritabanıyla bir FastAPI uygulaması kurmanıza rehberlik edecek. NoSQL veritabanları, veri depolama ve yönetme konusunda esneklik ve ölçeklenebilirlik sunarak, çeşitli ve karmaşık veri yapılarını yönetmesi gereken uygulamalar için harika bir kaynak haline geliyor.

Ön koşullar
  • Sudo ayrıcalıklarına sahip, root olmayan bir kullanıcı ve etkin bir güvenlik duvarı ile Ubuntu çalıştıran bir sunucu. Kurulum talimatları için lütfen bu listeden dağıtımınızı seçin ve Sunucuya Başlarken kılavuzumuzu izleyin. Lütfen desteklenen bir Ubuntu sürümü çalıştırdığınızdan emin olun.
  • Linux Komut Satırını Tanımak Komut satırına giriş veya bilgilerinizi tazelemek için Linux Komut Satırı Kılavuzu'ndaki bu kılavuza göz atabilirsiniz.
  • Sisteminizde yapılandırılmış depolar üzerinden yazılımların en son sürümlerinin ve güvenlik güncellemelerinin bulunduğundan emin olmak için Ubuntu terminalinde sudo apt-get update komutunu çalıştırın.

Adım 1 – Python ortamını makinenize kurun

Bu eğitim boyunca, komutları çalıştırmak için Python3 paketini kullanacağız. Ubuntu'nun en son sürümü Python 3 yüklü olarak gelir, bu nedenle kurulumunu doğrulamak için aşağıdaki komutu çalıştırın:

python3 --version

Hata tekrarlanırsa, paketi şu komutu çalıştırarak yükleyebilir/yeniden yükleyebilirsiniz:

sudo apt-get install python3

Daha sonra Python paketlerini ve bağımlılıklarını güvenli bir şekilde kurmak için pip'i kurmanız gerekir.

sudo apt-get install python3-pip

Adım 2 – Sanal bir ortam oluşturun

Ubuntu sürümü < 24.04'ü kullanıyorsanız sanal bir ortam oluşturmanıza gerek yoktur, ancak proje bağımlılıklarınızı ayırmak iyi bir uygulamadır.

Python 3.11 ve pip 22.3'ten başlayarak, Python temel ortamlarının "harici olarak yönetilen" olarak işaretlenmesi gerektiğini belirten yeni bir PEP 668 var; bu, sanal bir ortamda çalışmadığınız sürece paketleri yüklemek için pip'i başarıyla kullanamayacağınız anlamına geliyor.

Bu adımda, farklı paket sürümleri arasında olası çakışmaları önlemek için projenizin bağımlılıklarını izole edecek sanal bir ortam oluşturacaksınız. Terminalde aşağıdaki komut setini çalıştırın:

sudo apt-get install python3-venv

Bu, sanal bir ortam oluşturmak için gereken venv paketini kuracaktır.

python3 -m venv fastapi-env

Bu komut, çalışma dizininizde fastapi-env adında bir sanal ortam oluşturur. Bu ortamda çalışmaya başlamak için onu etkinleştirmeniz gerekir.

source fastapi-env/bin/activate

Başarılı bir çalıştırma sonucunda terminal önekini aşağıdaki gibi göreceksiniz:

(fastapi-env) user@machine:~$

Artık bu sanal ortamın içerisine gerekli bağımlılıkları kurmaya başlayabilirsiniz.

Adım 3 – Gerekli kitaplıkları ve paketleri yükleyin

Bu adımda, bu eğitimi başarıyla takip etmek için gereken birkaç paketi ve kütüphaneyi yükleyeceksiniz.

FastAPI uygulamanızı derlemek için gerekli olan Fastapi'yi ve FastAPI uygulamanızı çalıştırmak için gerekli olan Unicorn'u yükleyerek başlayalım.

pip install fastapi uvicorn

Bu eğitimde, MongoDB'yi NoSQL veritabanı olarak kullanacağız. FastAPI'niz üzerinden MongoDB ile etkileşim kurmak için, MongoDB için eşzamansız bir Python sürücüsü olan motoru yüklemeniz gerekecektir.

pip install motor

Adım 4 – Ubuntu'ya MongoDB'yi kurun ve ayarlayın

Ubuntu makinesine MongoDB kurmak için terminalde aşağıdaki komut setini çalıştırın:

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

Başarılı bir yürütme durumunda, bu parametre yankı döndürür. Şimdi hızlıca şunu yapın:

sudo apt-get update

Bu, MongoDB anahtarlarınızı kurduğunuzda en son güncellemeleri aldığınızdan emin olmanızı sağlar.

Daha sonra MongoDB'yi kurmak için gerekli olan OpenSSL bağımlılığını sisteminize kurmanız gerekiyor.

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

Çalıştırırken hizmetleri yeniden başlatmanız istenecektir. Yeniden başlattıktan sonra, aşağıdaki komutu kullanarak MongoDB'yi yükleyin:

sudo apt-get install -y mongodb

MongoDB servislerini başlatın ve etkinleştirin:

sudo systemctl start mongod
sudo systemctl enable mongod

Aşağıdaki komutları çalıştırarak MongoDB servisinin durumunu kontrol edebilir ve bağlantıyı test edebilirsiniz:

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

Adım 5 – Bir FastAPI uygulaması oluşturun

Bir sonraki adım, bir FastAPI uygulaması oluşturmaktır. Çalışma klasörünüzde bir database.py dosyası oluşturun:

nano database.py

Boş bir metin düzenleyici açılacaktır. Veritabanı bağlantı mantığınızı buraya yazın.

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

mydatabase koleksiyonunun bazı verilerle doldurulduğunu varsayarak, uygulama mantığınızı tutacak bir main.py dosyası oluşturacaksınız. Aşağıdaki FastAPI uygulamasında, yapay zeka tahmini için database.py yolları kullanılarak bir veritabanı bağlantısı tanımlanmıştır. Bu yollar kullanılarak girdi doğrulanır.

nano main.py

Metin düzenleyicide şu mantığı yazın:

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

Bu programın ne işe yaradığının özeti şöyledir:

  • Sklearn'den Doğrusal Regresyon Modeli: Bu model, bir girdi özelliğine dayanarak bir çıktıyı tahmin eder.
  • Pydantic modelinden giriş verileri: Bu yapı, tahmin uç noktası için beklenen girdiyi tanımlar. Bu durumda, girdi bir kayan noktadır.
  • MongoDB rotaları: /items/ ve POST /items/ rotaları, öğeleri almanıza ve bunları MongoDB koleksiyonunuza eklemenize olanak tanır.

Adım 6 – FastAPI uygulamasını çalıştırın

Bu programı başarıyla çalıştırmak için programda kullanılan kütüphaneleri ve paketleri kurmanız gerekmektedir.

pip install pydantic scikit-learn numpy

Şimdi bu programı çalıştırmak için aşağıdaki komutu kullanın:

uvicorn main:app --reload

Bu komutun çıktısı aşağıdaki gibi olacaktır:

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, Swagger UI kullanarak otomatik olarak etkileşimli bir API dokümantasyonu oluşturdu. Dokümantasyona http://127.0.0.1:8000/docs adresinden ulaşabilirsiniz.

Girişinize göre bir değeri tahmin eden bir uç noktayı çağırmak için curl veya Postman gibi araçları kullanabilirsiniz.

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

Adım 7 [İsteğe bağlı] – Uygulamayı Docker Compose kullanarak çalıştırın

Uygulamanızı konteynerleştirebilir ve docker-compose kullanarak çalıştırabilirsiniz. Uygulamanızı konteynerleştirmek, uygulamanızı dağıtmayı, ölçeklendirmeyi ve yönetmeyi kolaylaştırarak dağıtım sürecini basitleştirir.

Sonuç

Bu eğitimde, MongoDB ile bir FastAPI uygulamasını nasıl başarılı bir şekilde başlatacağınızı, girdi tahminlerini depolayabilen ve alabilen basit bir yapay zeka tabanlı uygulama oluşturmayı öğrendiniz.

FastAPI ve NoSQL veritabanının birleşimi, yapay zeka destekli uygulamaların oluşturulması ve ölçeklendirilmesi için güçlü ve esnek bir ortam sağlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz