Введение
При разработке приложений на 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 обеспечивает мощную и гибкую среду для создания и масштабирования приложений на основе искусственного интеллекта.









