Развертывание FastAPI и uvicorn в службе приложений Azure

#azure #deployment #azure-web-app-service #fastapi #uvicorn

#azure #развертывание #azure-web-app-service #fastapi #uvicorn

Вопрос:

Я хочу развернуть простой FastAPI / uvicorn в службе приложений Azure.

Кажется, что при каждом развертывании все работает гладко, но в тот момент, когда я ввожу URL-адрес для своего веб-приложения, я получаю следующее сообщение об ошибке:

Сообщение об ошибке

На моем локальном компьютере uvicorn работает нормально. На моем веб-сервисе я запускаю python 3.7 и fastapi 0.62.0.

При каждом развертывании я запускаю документ с именем startup.sh только с одной строкой кода:

python -m uvicorn main:app --host 0.0.0.0 --port 80

Помощь очень ценится!

Комментарии:

1. Каков ваш метод развертывания?

2. После запроса журналов приложений на портале, после тестирования одного за другим, я обнаружил, что отсутствие этих модулей привело к сбою запуска проекта.

3. Если мое решение вдохновит или поможет вам, не могли бы вы отметить мой ответ как принятый , спасибо ~

Ответ №1:

После развертывания веб-приложения я добавляю несколько модулей и добавляю команду запуска на портале. Это работает для меня. (Загрузить пример кода)

1. Команды, подобные приведенным ниже:

Вы также можете добавить fastapi, uvicorn, uvloop, httptools в requirements.txt , пусть программа автоматически устанавливает эти модули при развертывании.

 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
 

введите описание изображения здесь

Результат:

введите описание изображения здесь

Ответ №2:

Служба приложений Azure для Linux с ее Oryx build runner при идентификации веб-приложений Python запускает их с помощью Gunicorn сервера WSGI. Таким образом, в вашем сценарии запуска может быть команда gunicorn для запуска приложения FastAPI с помощью рабочего класса uvicorn.workers.UvicornWorker Gunicorn .

 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
 

Также имеется подробное пошаговое руководство, демонстрирующее, как развернуть FastAPI в службе приложений Azure всего за 30 минут