В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.
1. Подготовка к запуску
2. Перезапуск после изменения кода сайта
3. Работа с ошибками приложения
4. Интерактивная документация
ASGI — это клиент-серверный протокол взаимодействия веб-сервера и приложения, дальнейшее развитие технологии WSGI. По сравнению с WSGI предоставляет стандарт как для асинхронных, так и для синхронных приложений. На услуге “Хостинг” в качестве ASGI-сервера используется hypercorn, который автоматически использует в своем конфигурационном файле значения переменных окружения APP_IP и APP_PORT, так как возможность запуска на произвольном ip-адресе и порту доступна только на виртуальных машинах.
В этой статье мы рассмотрим пример размещения простого приложения на FastAPI в контейнере услуги “Хостинг”. Для этого потребуется создать новый сайт, выбрав Python ASGI
и выполнить следующие действия:
подключитесь по ssh и перейдите в каталог созданного сайта для активации виртуального окружения или запустите Терминал
со вкладки “Файлы”
произведите установку fastapi с помощью команды
pip install fastapi
rm www/index.html
rm app/index.html
rm app/asgi.py
app/asgi.py
с содержимымfrom fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello, Sick, Sad World"}
fake_db_items = [{"item_name": "Daria"}, {"item_name": "Jane"}, {"item_name": "Quinn"}, {"item_name": "Trent"}, {"item_name": "Tom"}]
@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 5):
return fake_db_items[skip : skip + limit]
В этом примере мы импортируем FastAPI и создаем экземпляр нашего приложения. Затем мы используем декоратор @app.get для определения двух маршрутов:
/
- этот маршрут возвращает простой словарь с сообщением «Hello, Sick, Sad World».
/items/
- этот код FastAPI определяет маршрут, который возвращает подмножество элементов из массива fake_db_items. Параметры skip и limit используются для указания диапазона элементов, которые необходимо вернуть. Функция read_item принимает эти параметры и возвращает массив элементов, начиная с указанного смещения (skip) и ограниченного указанным количеством (limit). В данном случае код возвращает элементы из массива fake_db_items, начиная с нулевого индекса и ограниченный пятью элементами. Например, если вы запросите маршрут /items/?skip=2&limit=3, функция read_item вернет элементы с индексами 2, 3 и 4 из массива fake_db_items. Этот код демонстрирует использование параметров маршрутов в FastAPI для динамического получения данных и их возврата в ответе.
Для перезапуска приложения в терминальном режиме в каталоге сайта выполните команду:
touch reload
Например
c56789@h0:~/имя_сайта$ touch reload
В качестве альтернативного вариант можно воспользоваться кнопкой Перезапустить Python ASGI
на вкладке “Python ASGI” сайта в личном кабинете.
Если при обращении к сайту вы видите ошибку 502 Bad Gateway
или иную, то в первую
очередь стоит обратиться к журналу ошибок, которые Вы можете найти в файле имя_сайта/log/app-runlog/current
.
Наблюдение в реальном времени за лог-файлом:
tail -f ~/имя_сайта/log/app-runlog/current
Вы можете ознакомиться с автоматической интерактивной документацией, работающей на Swagger UI, обратившись в браузере по адресу
https://имя_сайта/docs