es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

FastAPI, uvicorn.run() siempre crea 3 instancias, pero quiero que sea solo 1 instancia.

Ejecuto FastAPI en el IDE PyCharm y siempre se ejecutan 3 workers.
No sé por qué, pero siempre se accede a la última instancia creada en cada llamada a la API.

¿Alguien puede ayudarme a obtener un único worker en ejecución?

Código:

import uvicorn
from fastapi import FastAPI
from fastapi.templating import Jinja2Templates
from starlette.middleware.cors import CORSMiddleware

app = FastAPI()
app.add_middleware(CORSMiddleware,
                   allow_origins=["*"],
                   allow_methods=["*"],
                   allow_headers=["*"])
print(f"main.py con :{app}")


@app.get('/')
def home():
    return "Hola"


if __name__ == "__main__":
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=False, log_level="debug", debug=True,
                workers=1, limit_concurrency=1, limit_max_requests=1)

Salida en la consola:

“`

<blockquote>
<pre><code>/Users/user/.pyenv/versions/3.7.10/bin/python /Users/user/github/my-project/backend/main.py
main.py con :<fastapi.applications.fastapi object="" at="" 0x102b35d50="">
INFO: Se observarán cambios en estos directorios: ['/Users/user/github/my-project/backend']
INFO: Uvicorn en ejecución en http://0.0.0.0:8000 (Presiona CTRL+C para salir)
INFO: Se inició el proceso de reloader [96259] usando statreload
main.py con :<fastapi.applications.fastapi object="" at="" 0x10daadf50="">
main.py con :<fastapi.applications.fastapi object="" at="" 0x1106bfe50="">
INFO: Se inició el proceso del servidor [96261]
INFO: Esperando al inicio de la aplicación.
INFO: Inicio de la aplicación completado.
</code></pre>

“`</fastapi.applications.fastapi></fastapi.applications.fastapi></fastapi.applications.fastapi>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual FastAPI siempre ejecuta 3 trabajadores podría ser porque ese es el valor por defecto para el parámetro ‘workers’ en Uvicorn. En el código proporcionado, parece que el parámetro ‘workers’ está configurado explícitamente en 1, por lo que debería ejecutarse solo un trabajador. Sin embargo, el problema de acceder a la misma instancia en cada llamada a la API podría deberse a varias razones:

    1. Asegúrese de que no haya otras instancias del mismo código ejecutándose en segundo plano, ya que esto puede causar problemas con la ejecución del código.
    2. Intente establecer el parámetro ‘reload’ en True, lo cual recargará el servidor en cada solicitud. Esto puede ayudar asegurando que se cree una nueva instancia en cada solicitud.

    3. Verifique los registros para ver si hay algún error que pueda estar causando el problema, e intente resolverlos.

    4. Pruebe ejecutando el código fuera del entorno de desarrollo PyCharm para ver si el problema persiste.

    En general, puede ser necesario investigar más a fondo el problema para determinar la causa raíz y encontrar una solución adecuada.

Comments are closed.