#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 минут