¿Cómo configurar una aplicación FastAPI con una base de datos NoSQL?

0 acciones
0
0
0
0

Introducción

Al desarrollar aplicaciones Python, FastAPI es una excelente opción gracias a su velocidad, simplicidad y compatibilidad con programación asíncrona. En este tutorial, exploraremos la configuración de FastAPI con una base de datos NoSQL, que ofrece flexibilidad y escalabilidad para gestionar diversos datos.

Requisitos previos
  • Servidor Ubuntu, un usuario no root con acceso sudo y un firewall habilitado.
  • Introducción a la línea de comandos de Linux.
  • Orden sudo apt-get update Ejecútelo en la terminal de Ubuntu para asegurarse de que su sistema tenga las últimas versiones y actualizaciones de seguridad del software disponibles en los repositorios del sistema.

Nota: Estas instrucciones son válidas para las últimas versiones de Ubuntu: Ubuntu 24.04, Ubuntu 22.04 y Ubuntu 20.04. Si usa Ubuntu 18.04 o una versión anterior, le recomendamos actualizar a una versión más reciente, ya que Ubuntu ya no es compatible con estas versiones.

Paso 1: Configuración del entorno de Python en su sistema

En este tutorial, usaremos el paquete python3 para ejecutar comandos. Las versiones más recientes de Ubuntu vienen con Python 3 instalado por defecto, así que para verificar su instalación, ejecute el siguiente comando:

python3 --version

Si este comando devuelve un error, puede instalar o reinstalar el paquete ejecutando el siguiente comando:

sudo apt-get install python3

A continuación, debe instalar pip para instalar de forma segura los paquetes de Python y sus dependencias.

sudo apt-get install python3-pip

Paso 2 – Crear un entorno virtual

Si está utilizando la versión de Ubuntu < 24.04, no necesita crear un entorno virtual, pero es una buena práctica separar las dependencias del proyecto.

A partir de Python 3.11 y pip 22.3, se introdujo un nuevo PEP 668 que marca los entornos base de Python como "administrados externamente", lo que significa que no se puede usar pip con éxito para instalar paquetes a menos que se esté trabajando en un entorno virtual. Hazlo.

En este paso, creará un entorno virtual para su proyecto que aísla las dependencias del proyecto para evitar posibles problemas entre las diferentes versiones de los paquetes. Ejecute los siguientes comandos en la terminal:

sudo apt-get install python3-venv

Este comando está cerrado. venv Instalará lo necesario para crear un entorno virtual.

python3 -m venv fastapi-env

Este comando crea un entorno virtual llamado fastapi-env Se creará un directorio dentro de tu directorio de trabajo. Para empezar a trabajar en este entorno, debes habilitarlo.

source fastapi-env/bin/activate

Si tiene éxito, verá la vista previa del terminal mostrada de la siguiente manera:

(fastapi-env) user@machine:~$

Ahora puede comenzar a instalar las dependencias necesarias dentro de este entorno virtual.

Paso 3 – Instalar las bibliotecas y los paquetes necesarios

En este paso, instalará algunos paquetes y bibliotecas necesarios para seguir este tutorial con éxito.

Primero instalando API rápida Comenzaremos con lo que se necesita para crear su aplicación y luego uvicornio Lo cual es necesario para ejecutar la aplicación FastAPI.

pip install fastapi uvicorn

En este tutorial, usaremos MongoDB como base de datos NoSQL. Para interactuar con MongoDB desde FastAPI, necesitas motor Instalar , que es un controlador Python asincrónico para MongoDB.

pip install motor

Paso 4: Instalar y configurar MongoDB en Ubuntu

Para instalar MongoDB en su sistema Ubuntu, ejecute el siguiente conjunto de comandos en la terminal:

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

Si se ejecuta correctamente, este comando devolverá el parámetro echo. Ahora, realice una actualización rápida:

sudo apt-get update

Esto garantiza que obtenga las últimas actualizaciones después de configurar sus claves MongoDB.

Después de eso, debes instalar una dependencia de openssl en tu sistema, que es necesaria para instalar 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

Tras la ejecución, se le pedirá que reinicie los servicios. Tras reiniciar, instale MongoDB con el siguiente comando:

sudo apt-get install -y mongodb

Iniciar y habilitar los servicios de MongoDB:

sudo systemctl start mongod
sudo systemctl enable mongod

Puede comprobar el estado del servicio MongoDB y probar la conexión ejecutando los siguientes comandos:

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

Paso 5: Crear la aplicación FastAPI

El siguiente paso es crear una aplicación FastAPI. En su directorio de trabajo, cree un archivo llamado base de datos.py Crear:

nano database.py

Se abrirá un editor de texto en blanco. Escriba aquí la lógica de conexión a la base de datos.

from motor.motor_asyncio import AsyncIOMotorClient

MONGO_DETAILS = "mongodb://localhost:27017"

client = AsyncIOMotorClient(MONGO_DETAILS)

db = client.mydatabase

collection = db.mycollection

Suponiendo que el conjunto mi colección De la base de datos mi base de datos Está lleno de datos, ahora necesitas un archivo. principal.py Cree una clase que contenga la lógica de su aplicación. En la aplicación FastAPI a continuación, conéctese a la base de datos mediante base de datos.py Se establecen y definen rutas para las predicciones de IA. Estas rutas se utilizan para la validación de entradas.

nano main.py

En el editor de texto, escriba el siguiente código:

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

Aquí hay una explicación de cómo funciona este programa:

  • Modelo de regresión lineal de sklearn:Este modelo predice la salida en función de una característica de entrada.
  • Datos de entrada del modelo PydanticEste modelo define la estructura de entrada esperada para el punto final de predicción. Aquí, la entrada es de tipo float.
  • Rutas de MongoDB: Rutas /elementos/ y PUBLICAR /artículos/ Le permiten recuperar e importar elementos de su colección MongoDB.

Paso 6 – Ejecutar la aplicación FastAPI

Para ejecutar correctamente este programa, debe instalar las bibliotecas y los paquetes utilizados en el programa.

pip install pydantic scikit-learn numpy

Ahora, use el siguiente comando para ejecutar este programa:

uvicorn main:app --reload

La salida de este comando será la siguiente:

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 ha generado automáticamente documentación interactiva de la API mediante Swagger UI. Puedes acceder a ella a través de la dirección http://127.0.0.1:8000/docs Acceder a él.

Puede utilizar herramientas como curl o Postman para llamar a un punto final que prediga el valor en función de su entrada.

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

Resultado

En este tutorial, aprendió cómo implementar con éxito una aplicación FastAPI con MongoDB y crear una aplicación simple basada en IA capaz de almacenar y recuperar predicciones de entrada.

La combinación de FastAPI y la base de datos NoSQL proporciona un entorno potente y flexible para crear y escalar aplicaciones basadas en IA.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


También te puede gustar