Introducción
Al desarrollar aplicaciones Python, FastAPI se destaca como la mejor opción para crear soluciones de alto rendimiento. Ofrece velocidad, simplicidad y compatibilidad con programación asíncrona, lo que lo hace ideal para desarrollar aplicaciones modernas y escalables. Este tutorial le guiará en la configuración de una aplicación FastAPI con una base de datos NoSQL. Las bases de datos NoSQL ofrecen flexibilidad y escalabilidad para almacenar y gestionar datos, lo que las convierte en un recurso excelente para aplicaciones que necesitan gestionar estructuras de datos diversas y complejas.
Requisitos previos
- Un servidor con Ubuntu, un usuario no root con privilegios de sudo y un firewall habilitado. Para obtener instrucciones sobre cómo configurarlo, seleccione su distribución de esta lista y siga nuestra guía "Introducción a un servidor". Asegúrese de utilizar una versión compatible de Ubuntu.
- Conociendo la línea de comandos de Linux Para una introducción o repaso de la línea de comandos, puede consultar esta guía sobre la línea de comandos de Linux.
- Ejecute sudo apt-get update en la terminal de Ubuntu para asegurarse de que su sistema tenga las últimas versiones y actualizaciones de seguridad del software disponible en los repositorios configurados en su sistema.
Paso 1: Configure el entorno de Python en su máquina
En este tutorial, usaremos el paquete python3 para ejecutar comandos. La última versión de Ubuntu viene con Python 3 instalado, así que para verificar su instalación, ejecute el siguiente comando:
python3 --version
Si el error vuelve a aparecer, puedes instalar o reinstalar el paquete ejecutando:
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 una versión de Ubuntu < 24.04, no necesita crear un entorno virtual, pero es una buena práctica separar las dependencias de su proyecto.
A partir de Python 3.11 y pip 22.3, hay un nuevo PEP 668 que establece que los entornos base de Python deben marcarse 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.
En este paso, creará un entorno virtual para su proyecto que aislará las dependencias del mismo para evitar posibles conflictos entre diferentes versiones de paquetes. Ejecute el siguiente conjunto de comandos en la terminal:
sudo apt-get install python3-venv
Esto instalará el paquete venv necesario para crear un entorno virtual.
python3 -m venv fastapi-env
Este comando crea un entorno virtual fastapi-env en su directorio de trabajo. Para empezar a trabajar en este entorno, debe habilitarlo.
source fastapi-env/bin/activateTras una ejecución exitosa, verá el prefijo de terminal 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 paquetes necesarios
En este paso, instalará algunos paquetes y bibliotecas necesarios para seguir este tutorial con éxito.
Comencemos instalando Fastapi, que es necesario para crear su aplicación FastAPI, y Unicorn, que es necesario para ejecutar su aplicación FastAPI.
pip install fastapi uvicorn
En este tutorial, usaremos MongoDB como base de datos NoSQL. Para interactuar con MongoDB desde FastAPI, deberá instalar el motor, que es un controlador Python asíncrono para MongoDB.
pip install motor
Paso 4: Instalar y configurar MongoDB en Ubuntu
Para instalar MongoDB en una máquina 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 la ejecución es correcta, este parámetro devuelve un eco. Ahora, hazlo rápidamente:
sudo apt-get update
Esto garantiza que obtenga las últimas actualizaciones una vez que configure sus claves MongoDB.
A continuación, debe instalar una dependencia de OpenSSL en su 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.debDurante la ejecución, se le solicitará 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 una aplicación FastAPI
El siguiente paso es crear una aplicación FastAPI. En tu carpeta de trabajo, crea un archivo database.py:
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 la colección mydatabase contiene datos, creará un archivo main.py que contendrá la lógica de su aplicación. En la aplicación FastAPI a continuación, se define una conexión a la base de datos utilizando las rutas de database.py para la predicción de IA. Con estas rutas, se valida la entrada.
nano main.py
En el editor de texto, escribe la lógica:
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 un resumen de lo que hace este programa:
- Modelo de regresión lineal de sklearn: este modelo predice una salida basada en una característica de entrada.
- Datos de entrada del modelo de Pydantic: Esta estructura define la entrada esperada para el punto final de la predicción. En este caso, es un valor de punto flotante.
- Rutas MongoDB: Las rutas /items/ y POST /items/ le permiten recuperar elementos e insertarlos en 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 generó automáticamente una documentación interactiva de la API mediante Swagger UI. Puede acceder a ella en http://127.0.0.1:8000/docs.
Puede utilizar herramientas como curl o Postman para llamar a un punto final que prediga un 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}'
Paso 7 [Opcional] – Ejecute la aplicación usando Docker Compose
Puedes contener tu aplicación y ejecutarla con Docker-Compose. Contenerizar tu aplicación simplifica el proceso de implementación, facilitando su implementación, escalado y mantenimiento.
Resultado
En este tutorial, aprendió cómo iniciar con éxito una aplicación FastAPI con MongoDB, creando 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 impulsadas por IA.









