Movatterモバイル変換


[0]ホーム

URL:


Saltar a contenido
Join theFastAPI Cloud waiting list 🚀
Follow@fastapi onX (Twitter) to stay updated
FollowFastAPI onLinkedIn to stay updated
Subscribe to theFastAPI and friends newsletter 🎉
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor
sponsor

Servidores Workers - Uvicorn con Workers

🌐 Traducción por IA y humanos

Esta traducción fue hecha por IA guiada por humanos. 🤝

Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖

Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.

Versión en inglés

Vamos a revisar esos conceptos de despliegue de antes:

  • Seguridad - HTTPS
  • Ejecución al inicio
  • Reinicios
  • Replicación (el número de procesos en ejecución)
  • Memoria
  • Pasos previos antes de empezar

Hasta este punto, con todos los tutoriales en la documentación, probablemente has estado ejecutando unprograma de servidor, por ejemplo, usando el comandofastapi, que ejecuta Uvicorn, corriendo unsolo proceso.

Al desplegar aplicaciones probablemente querrás tener algo dereplicación de procesos para aprovecharmúltiples núcleos y poder manejar más requests.

Como viste en el capítulo anterior sobreConceptos de Despliegue, hay múltiples estrategias que puedes usar.

Aquí te mostraré cómo usarUvicorn conworker processes usando el comandofastapi o el comandouvicorn directamente.

Información

Si estás usando contenedores, por ejemplo con Docker o Kubernetes, te contaré más sobre eso en el próximo capítulo:FastAPI en Contenedores - Docker.

En particular, cuando corras enKubernetes probablementeno querrás usar workers y en cambio correrun solo proceso de Uvicorn por contenedor, pero te contaré sobre eso más adelante en ese capítulo.

Múltiples Workers

Puedes iniciar múltiples workers con la opción de línea de comando--workers:

Si usas el comandofastapi:

$<fontcolor="#4E9A06">fastapi</font>run--workers4<ustyle="text-decoration-style:solid">main.py</u>  <span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span>  Starting production server 🚀             Searching for package file structure from directories with             <font color="#3465A4">__init__.py</font> files             Importing from <font color="#75507B">/home/user/code/</font><font color="#AD7FA8">awesomeapp</font>   <span style="background-color:#007166"><font color="#D3D7CF"> module </font></span>  🐍 main.py     <span style="background-color:#007166"><font color="#D3D7CF"> code </font></span>  Importing the FastAPI app object from the module with the             following code:             <u style="text-decoration-style:solid">from </u><u style="text-decoration-style:solid"><b>main</b></u><u style="text-decoration-style:solid"> import </u><u style="text-decoration-style:solid"><b>app</b></u>      <span style="background-color:#007166"><font color="#D3D7CF"> app </font></span>  Using import string: <font color="#3465A4">main:app</font>   <span style="background-color:#007166"><font color="#D3D7CF"> server </font></span>  Server started at <font color="#729FCF"><u style="text-decoration-style:solid">http://0.0.0.0:8000</u></font>   <span style="background-color:#007166"><font color="#D3D7CF"> server </font></span>  Documentation at <font color="#729FCF"><u style="text-decoration-style:solid">http://0.0.0.0:8000/docs</u></font>             Logs:     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Uvicorn running on <font color="#729FCF"><u style="text-decoration-style:solid">http://0.0.0.0:8000</u></font> <b>(</b>Press CTRL+C to             quit<b>)</b>     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Started parent process <b>[</b><font color="#34E2E2"><b>27365</b></font><b>]</b>     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Started server process <b>[</b><font color="#34E2E2"><b>27368</b></font><b>]</b>     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Started server process <b>[</b><font color="#34E2E2"><b>27369</b></font><b>]</b>     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Started server process <b>[</b><font color="#34E2E2"><b>27370</b></font><b>]</b>     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Started server process <b>[</b><font color="#34E2E2"><b>27367</b></font><b>]</b>     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Waiting for application startup.     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Waiting for application startup.     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Waiting for application startup.     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Waiting for application startup.     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Application startup complete.     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Application startup complete.     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Application startup complete.     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Application startup complete.

Si prefieres usar el comandouvicorn directamente:

$uvicornmain:app--host0.0.0.0--port8080--workers4<font color="#A6E22E">INFO</font>:     Uvicorn running on <b>http://0.0.0.0:8080</b> (Press CTRL+C to quit)<font color="#A6E22E">INFO</font>:     Started parent process [<font color="#A1EFE4"><b>27365</b></font>]<font color="#A6E22E">INFO</font>:     Started server process [<font color="#A1EFE4">27368</font>]<font color="#A6E22E">INFO</font>:     Waiting for application startup.<font color="#A6E22E">INFO</font>:     Application startup complete.<font color="#A6E22E">INFO</font>:     Started server process [<font color="#A1EFE4">27369</font>]<font color="#A6E22E">INFO</font>:     Waiting for application startup.<font color="#A6E22E">INFO</font>:     Application startup complete.<font color="#A6E22E">INFO</font>:     Started server process [<font color="#A1EFE4">27370</font>]<font color="#A6E22E">INFO</font>:     Waiting for application startup.<font color="#A6E22E">INFO</font>:     Application startup complete.<font color="#A6E22E">INFO</font>:     Started server process [<font color="#A1EFE4">27367</font>]<font color="#A6E22E">INFO</font>:     Waiting for application startup.<font color="#A6E22E">INFO</font>:     Application startup complete.

La única opción nueva aquí es--workers indicando a Uvicorn que inicie 4 worker processes.

También puedes ver que muestra elPID de cada proceso,27365 para el proceso padre (este es elgestor de procesos) y uno para cada worker process:27368,27369,27370, y27367.

Conceptos de Despliegue

Aquí viste cómo usar múltiplesworkers paraparalelizar la ejecución de la aplicación, aprovechar losmúltiples núcleos del CPU, y poder servirmás requests.

De la lista de conceptos de despliegue de antes, usar workers ayudaría principalmente con la parte dereplicación, y un poquito con losreinicios, pero aún necesitas encargarte de los otros:

  • Seguridad - HTTPS
  • Ejecución al inicio
  • Reinicios
  • Replicación (el número de procesos en ejecución)
  • Memoria
  • Pasos previos antes de empezar

Contenedores y Docker

En el próximo capítulo sobreFastAPI en Contenedores - Docker te explicaré algunas estrategias que podrías usar para manejar los otrosconceptos de despliegue.

Te mostraré cómoconstruir tu propia imagen desde cero para ejecutar un solo proceso de Uvicorn. Es un proceso sencillo y probablemente es lo que querrías hacer al usar un sistema de gestión de contenedores distribuido comoKubernetes.

Resumen

Puedes usar múltiples worker processes con la opción CLI--workers con los comandosfastapi ouvicorn para aprovechar losCPUs de múltiples núcleos, para ejecutarmúltiples procesos en paralelo.

Podrías usar estas herramientas e ideas si estás instalandotu propio sistema de despliegue mientras te encargas tú mismo de los otros conceptos de despliegue.

Revisa el próximo capítulo para aprender sobreFastAPI con contenedores (por ejemplo, Docker y Kubernetes). Verás que esas herramientas tienen formas sencillas de resolver los otrosconceptos de despliegue también. ✨


[8]ページ先頭

©2009-2026 Movatter.jp