Saltar al contenido

¿Cómo ejecutar UVICORN en Heroku?

Solución:

Probé su configuración y después de algunas comprobaciones (nunca usé Heroku antes) supongo que su uvicorn nunca se une al puerto designado (era el comando heroku-cli heroku local trabajando para ti?)

Su Procfile podría verse así;

web: uvicorn src.main:app --host=0.0.0.0 --port=${PORT:-5000}

Este ejemplo asume que tiene su código fuente dentro de una subcarpeta llamada ‘src’ que tiene un vacío __init__.py (que indica un módulo de Python, probablemente desee agregar src a PYTHONPATH en su lugar, consulte app.json) y main.py que contiene su aplicación fastapi;

import socket
import sys

from fastapi import FastAPI

app = FastAPI()

hostname = socket.gethostname()

version = f"{sys.version_info.major}.{sys.version_info.minor}"


@app.get("https://foroayuda.es/")
async def read_root():
    return {
        "name": "my-app",
        "host": hostname,
        "version": f"Hello world! From FastAPI running on Uvicorn. Using Python {version}"
    }

He agregado mi ejemplo de trabajo a github que puedes ver en heroku (por ahora)

Las respuestas son correctas, pero para usar FastAPI en producción ejecutándose como WSGI con ASGI Los trabajadores es una mejor opción. Por eso, ejecuté un punto de referencia para esto. pregunta, así que aquí están los resultados.

Gunicorn con trabajadores de Uvicorn

Requests per second:    8665.48 [#/sec] (mean)
Concurrency Level:      500
Time taken for tests:   0.577 seconds
Complete requests:      5000
Time per request:       57.700 [ms] (mean)

Uvicorn puro

Requests per second:    3200.62 [#/sec] (mean)
Concurrency Level:      500
Time taken for tests:   1.562 seconds
Complete requests:      5000
Time per request:       156.220 [ms] (mean)

Como puede ver, hay una gran diferencia en RPS (solicitud por segundo) y tiempo de respuesta para cada solicitud.

Procfiles

Gunicorn con trabajadores de Uvicorn

web: gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app

Uvicorn puro

web: uvicorn main:app --workers 4

También puede configurar su FastAPI para que se ejecute en Gunicorn con uvicorn como proceso de trabajo. A continuación se muestra la línea de comando que puede mantener en el Procfile utilizado por Heroku para hacer que su aplicación esté en funcionamiento. El siguiente comando activará su aplicación en el proceso de 3 trabajadores

web: gunicorn -w 3 -k uvicorn.workers.UvicornWorker main:app

Para ver un video detallado paso a paso, puede visitar este video tutorial que detalla cómo implementar FastAPI en Heroku en solo 6 minutos. o puede tener un tutorial detallado sobre cómo crear e implementar FastAPI basado en Python en Heroku desde esta publicación de blog.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *