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 updateEjecú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.listSi 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.debTras 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 mongodPuede 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.mycollectionSuponiendo 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_itemAquí 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/yPUBLICAR /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.









