首页 > 解决方案 > 如何在 Heroku 中运行 UVICORN?

问题描述

所以我已经想出了如何编写一个fastAPI,我准备将我的脚本部署到我使用过fastAPI(https://fastapi.tiangolo.com/)的heroku,但是问题是当我向heroku发出请求时它只会返回:

<html>
  <head>
    <title>Internal Server Error</title>
  </head>
  <body>
    <h1><p>Internal Server Error</p></h1>

  </body>
</html>

这意味着脚本已打开,但我看不到错误,我会说它在本地工作得很好。

我无法看到问题所在的任何日志,但是我会说我的问题可能是我不确定我的procfile是否正确,因为我根本没有编辑它,而且我对此很陌生,我在这里问我如何能够在 heroku 中运行我的 fastapi 脚本?

我所知道的是,为了能够运行脚本,你必须使用命令uvicorn main:app --reload,如果你这样做,它将不起作用等等py main.py我做错了什么?

标签: pythonherokufastapiuvicorn

解决方案


答案是正确的,但是在生产环境中使用 FastAPI 作为WSGIASGI工作者是一个更好的选择,这就是为什么,我为这个问题运行了一个基准测试,所以这里是结果。

Gunicorn 与 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

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)

如您所见,每个请求的RPS(每秒请求数)和响应时间存在巨大差异。

档案

Gunicorn 与 Uvicorn 工人

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

纯uvicorn

web: uvicorn main:app --workers 4

推荐阅读