azure - 在 Azure 应用服务上部署 FastAPI 和 uvicorn

标签 azure deployment azure-web-app-service fastapi uvicorn

我想将简单的 FastAPI/uvicorn 部署到 Azure 应用服务上。

每次部署时,一切似乎都运行顺利,但当我输入 Web 应用程序的 URL 时,我会收到以下错误消息:

"Error" message

在我的本地机器上,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/

相关文章:

mysql - 如何在 ARM 模板中选择不同的 ClearDb MySQL 数据库类型?

angular - 使用 angular-cli-ghpages 将 Angular4 部署到 ghpages 时出错

azure - API 管理通过服务标签限制 IP 范围

azure - 在 Azure WebJobs 中写入和读取本地存储

sql-server - 有关 Active Geo-Replication 的问题(以及它如何与本地、数据中心内、冗余交互)

c# - ILMerge:如何合并Azure运行时库?

azure - Azure Scale Profile 门户边栏选项卡中的 "Target Range"有何含义?

node.js - Node 进程和跨多个 Node 的复制

Django 管理界面在生产中缺少 css 样式

c# - 页面在 localhost 上加载,但不在 Azure 网站中加载 - 错误 500