Как настроить приложение FastAPI с базой данных NoSQL?

0 Акции
0
0
0
0

Введение

При разработке приложений на Python FastAPI — отличный выбор благодаря своей скорости, простоте и поддержке асинхронного программирования. В этом руководстве мы рассмотрим настройку FastAPI с базой данных NoSQL, которая обеспечивает гибкость и масштабируемость для управления разнообразными данными.

Предпосылки
  • Ubuntu-сервер, пользователь без прав root, имеющий доступ sudo и включенный брандмауэр.
  • Введение в командную строку Linux.
  • Заказ sudo apt-get update Выполните команду в терминале Ubuntu, чтобы убедиться, что в вашей системе установлены последние версии и обновления безопасности программного обеспечения, доступные в системных репозиториях.

Примечание: Данные инструкции действительны для последних версий Ubuntu: Ubuntu 24.04, Ubuntu 22.04 и Ubuntu 20.04. Если вы используете Ubuntu 18.04 или более старую версию, мы рекомендуем обновиться до более новой, поскольку Ubuntu больше не поддерживает эти версии.

Шаг 1 – Настройка среды Python в вашей системе

В этом руководстве мы будем использовать пакет python3 для выполнения команд. В более новых версиях Ubuntu Python 3 установлен по умолчанию, поэтому для проверки его установки выполните следующую команду:

python3 --version

Если эта команда вернет ошибку, вы можете установить или переустановить пакет, выполнив следующую команду:

sudo apt-get install python3

Далее вам необходимо установить pip для безопасной установки пакетов Python и их зависимостей.

sudo apt-get install python3-pip

Шаг 2 – Создание виртуальной среды

Если вы используете Ubuntu версии < 24.04, вам не нужно создавать виртуальное окружение, но рекомендуется разделять зависимости проекта.

Начиная с Python 3.11 и pip 22.3, был введен новый PEP 668, который помечает базовые среды Python как “управляемые извне”, что означает, что вы не сможете успешно использовать pip для установки пакетов, если не работаете в виртуальной среде. Сделай это.

На этом этапе вы создадите виртуальное окружение для своего проекта, которое изолирует зависимости проекта, чтобы предотвратить потенциальные проблемы между различными версиями пакетов. Выполните следующие команды в терминале:

sudo apt-get install python3-venv

Эта команда закрыта. венв Это позволит установить все необходимое для создания виртуальной среды.

python3 -m venv fastapi-env

Эта команда создает виртуальную среду под названием fastapi-env Это создаст директорию внутри вашей рабочей директории. Чтобы начать работать в этой среде, вам необходимо её включить.

source fastapi-env/bin/activate

В случае успеха вы увидите предварительный просмотр в терминале, который будет выглядеть следующим образом:

(fastapi-env) user@machine:~$

Теперь вы можете начать установку необходимых зависимостей внутри этой виртуальной среды.

Шаг 3 – Установите необходимые библиотеки и пакеты.

На этом этапе вам потребуется установить несколько пакетов и библиотек, необходимых для успешного выполнения данного руководства.

Сначала установите FastAPI Мы начнём с того, что необходимо для создания вашего приложения, а затем увикорн Это необходимо для запуска приложения FastAPI.

pip install fastapi uvicorn

В этом руководстве мы будем использовать MongoDB в качестве NoSQL-базы данных. Для взаимодействия с MongoDB из FastAPI вам потребуется... мотор Установите `<Password>`, асинхронный драйвер Python для MongoDB.

pip install motor

Шаг 4 – Установка и настройка MongoDB на Ubuntu

Для установки MongoDB в вашей системе Ubuntu выполните в терминале следующие команды:

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. В рабочей директории создайте файл с именем... база данных.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

Предполагая, что множество моя коллекция Из базы данных моя база данных Оно заполнено данными, теперь вам нужен файл. main.py Создайте класс, содержащий логику вашего приложения. В приведенном ниже приложении FastAPI подключитесь к базе данных через база данных.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Эта модель определяет ожидаемую структуру входных данных для конечной точки прогнозирования. В данном случае входные данные имеют тип float.
  • Пути к MongoDBМаршруты /предметы/ и 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}'

Результат

В этом руководстве вы узнали, как успешно развернуть приложение FastAPI с использованием MongoDB и создать простое приложение на основе искусственного интеллекта, способное хранить и извлекать входные прогнозы.

Сочетание FastAPI и базы данных NoSQL обеспечивает мощную и гибкую среду для создания и масштабирования приложений на основе искусственного интеллекта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться