En resumen, usa fastapi run para servir tu aplicación FastAPI:
<font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:solid">main.py</u>
fast →fastapi run main.py FastAPI Starting production server 🚀
Searching for package file structure from directories with __init__.py files Importing from /home/user/code/awesomeapp
module 🐍 main.py
code Importing the FastAPI app object from the module with the following code:
from main import app
app Using import string: main:app
server Server started at http://0.0.0.0:8000 server Documentation at http://0.0.0.0:8000/docs
Logs:
INFO Started server process [2306215] INFO Waiting for application startup. INFO Application startup complete. INFO Uvicorn running on http://0.0.0.0:8000(Press CTRL+C to quit)
FastAPI usa un estándar para construir frameworks y servidores web de Python llamado ASGI. FastAPI es un framework web ASGI.
Lo principal que necesitas para ejecutar una aplicación FastAPI (o cualquier otra aplicación ASGI) en una máquina servidora remota es un programa servidor ASGI como Uvicorn, este es el que viene por defecto en el comando fastapi.
Hay un pequeño detalle sobre los nombres a tener en cuenta. 💡
La palabra "servidor" se usa comúnmente para referirse tanto a la computadora remota/en la nube (la máquina física o virtual) como también al programa que se ejecuta en esa máquina (ej. Uvicorn).
Solo ten en cuenta que cuando leas "servidor" en general, podría referirse a una de esas dos cosas.
Cuando se refiere a la máquina remota, es común llamarla servidor, pero también máquina, VM (máquina virtual), nodo. Todas esas se refieren a algún tipo de máquina remota, normalmente ejecutando Linux, donde ejecutas programas.
Si instalaste un servidor ASGI manualmente, normalmente necesitarías pasar un string de importación en un formato especial para que importe tu aplicación FastAPI:
uvicorn main:app --host 0.0.0.0 --port 80
fast →uvicorn main:app --host 0.0.0.0 --port 80 INFO: Uvicorn running on http://0.0.0.0:80 (Press CTRL+C to quit)
Estos ejemplos ejecutan el programa servidor (ej. Uvicorn), iniciando un solo proceso, escuchando en todas las IPs (0.0.0.0) en un puerto predefinido (ej. 80).
Esta es la idea básica. Pero probablemente querrás encargarte de algunas cosas adicionales, como:
Seguridad - HTTPS
Ejecución al inicio
Reinicios
Replicación (el número de procesos en ejecución)
Memoria
Pasos previos antes de iniciar
Te contaré más sobre cada uno de estos conceptos, cómo pensar en ellos, y algunos ejemplos concretos con estrategias para manejarlos en los próximos capítulos. 🚀