我想将简单的 FastAPI/uvicorn 部署到 Azure 应用服务上。
每次部署时,一切似乎都运行顺利,但当我输入 Web 应用程序的 URL 时,我会收到以下错误消息:
在我的本地机器上,uvicorn 工作正常。在我的网络服务上,我运行 python 3.7 和 fastapi 0.62.0。
每次部署时,我都会启动一个名为startup.sh的文档,只用一行代码:
python -m uvicorn main:app --host 0.0.0.0 --port 80
非常感谢您的帮助!
最佳答案
适用于 Linux 的 Azure 应用服务及其 Oryx 构建运行程序在识别 Python Web 应用时使用 Gunicorn
(WSGI 服务器)运行它们。因此,您的启动脚本可以使用gunicorn命令在Gunicorn的工作类uvicorn.workers.UvicornWorker
的帮助下启动FastAPI应用程序。
gunicorn -w 2 -k uvicorn.workers.UvicornWorker main:app
-w
表示您想要以 Gunicorn 作为主节点启动的工作线程数量。
或者,您可以使用作为gunicorn参数提供的配置文件自动计算工作人员数量,如下所示。
gunicorn --config gunicorn.py main:app
并且gunicorn.py可以具有计算gunicorn的工作进程数量和其他配置参数的逻辑,如下所示。
import multiprocessing
import os
name = "Gunicorn config for FastAPI"
accesslog = "/home/user/fastapi/gunicorn-access.log"
errorlog = "/home/user/fastapi/gunicorn-error.log"
bind = "0.0.0.0:8000"
worker_class = "uvicorn.workers.UvicornWorker"
workers = multiprocessing.cpu_count () * 2 + 1
还有一个详细的分步教程演示 How to Deploy FastAPI on Azure App Service in just 30 minutes
关于azure - 在 Azure 应用服务上部署 FastAPI 和 uvicorn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66251679/