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/activateBaş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.listBaş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 mongodAş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.mycollectionmydatabase 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_itemBu 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.









