python - 如何在 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
我做错了什么?
解决方案
答案是正确的,但是在生产环境中使用 FastAPI 作为WSGI和ASGI工作者是一个更好的选择,这就是为什么,我为这个问题运行了一个基准测试,所以这里是结果。
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
推荐阅读
- javascript - 将脚本函数传递给另一个 html 脚本页面
- r - 在ggplot中问题填充直方图
- javascript - 嵌套滚动窗口中的粘性 HTML 元素无法正确呈现
- firebase - 当应用程序不使用 Firebase 身份验证时如何保护 Firebase 访问
- python-3.x - 解析时意外的 EOF:网络抓取
- r - 我需要一种方法/函数来有效地将每周数据转换为 R 中的每月数据,其中包含小数周
- python-3.x - 一种更简洁的重新格式化日期的方法
- javascript - 获取图像,为什么 const 名称很重要?
- python - Azure 服务主体创建 - 使用 Azure 函数
- c# - 在 EF Core 3 中使用反射会引发错误