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

s2j5cfk0  于 2023-04-22  发布在  其他
关注(0)|答案(3)|浏览(236)

我想将一个简单的FastAPI/uvicorn部署到Azure应用服务上。
每次我部署一切似乎都很顺利,但当我输入我的Web应用程序的URL时,我得到以下错误消息:

在我的本地机器上,uvicorn运行良好,在我的webservice上,我运行python3.7和fastapi0.62.0。
每次部署时,我都会启动一个名为www.example.com的文档startup.sh,其中只有一行代码:
python -m uvicorn main:app --host 0.0.0.0 --port 80
帮助是非常感谢!

szqfcxe2

szqfcxe21#

Azure App Service for Linux及其Oryx构建运行器在识别Python Web应用时使用Gunicorn(WSGI服务器)运行它们。因此,您的启动脚本可以在Gunicorn的worker类uvicorn.workers.UvicornWorker的帮助下使用gunicorn命令来启动FastAPI应用。

gunicorn -w 2 -k uvicorn.workers.UvicornWorker main:app

-w表示您希望以Gunicorn作为master启动的worker数量。
或者,您可以使用作为参数提供给gunicorn的配置文件来自动计算worker的数量,如下所示。

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

4dbbbstv

4dbbbstv2#

在部署webapp后,我添加了一些模块,并在portal上添加了start命令。它对我很有效。(Download sample code

1.如下命令:

  • 您也可以在requirements.txt中添加fastapi、uvicorn、uvloop、httptools,让程序在部署时自动安装这些模块。*
root@3a***a3:/home/site/wwwroot# pip install fastapi
root@3a***a3:/home/site/wwwroot# pip install uvicorn
root@3a***a3:/home/site/wwwroot# pip install uvloop
root@3a***a3:/home/site/wwwroot# pip install httptools

2.设置→配置→常规设置→启动命令。

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

结果:

czq61nw1

czq61nw13#

您可以使用配置SCM_DO_BUILD_DURING_DEPLOYMENT = 1在部署期间使用uvicorn激活构建
看到我的答案在其他线程
Azure应用程序服务找不到已安装的模块
我已经广泛地测试过了

相关问题