Хостинг
VDS
Аренда серверов
Домены
Почта
SSL
Хранилище
Сайты
Обзоры
Регламенты
AI Studio
Kubernetes
Архив
Как работает Python ASGI

Python ASGI

В хостинге некоторые решения могут показаться вам нестандартными.

Поэтому перед началом работы мы бы рекомендовали ознакомиться
с вводной статьей.

1. Подготовка к запуску

2. Перезапуск после изменения кода сайта

3. Работа с ошибками приложения

4. Интерактивная документация

ASGI — это клиент-серверный протокол взаимодействия веб-сервера и приложения, дальнейшее развитие технологии WSGI. По сравнению с WSGI предоставляет стандарт как для асинхронных, так и для синхронных приложений. На услуге “Хостинг” в качестве ASGI-сервера используется hypercorn, который автоматически использует в своем конфигурационном файле значения переменных окружения APP_IP и APP_PORT, так как возможность запуска на произвольном ip-адресе и порту доступна только на виртуальных машинах.

1. Подготовка к запуску

В этой статье мы рассмотрим пример размещения простого приложения на FastAPI в контейнере услуги “Хостинг”. Для этого потребуется создать новый сайт, выберите “Python ASGI” + нужный тип базы данных:

stat_pyhon_asgi1.png

и выполнить следующие действия:

  • подключитесь по ssh и перейдите в каталог созданного сайта для активации виртуального окружения или запустите Терминал со страницы сайта stat_python_asgi3.png

  • произведите установку 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 для динамического получения данных и их возврата в ответе.

2. Перезапуск после изменения кода сайта

Для перезапуска приложения в терминальном режиме в каталоге сайта выполните команду:

touch reload

Например

c71824@h1:~/sitename.ru$ touch reload

В качестве альтернативного вариант можно воспользоваться кнопкой Перезапустить Python ASGI на вкладке “Python ASGI” сайта в личном кабинете.

3. Работа с ошибками приложения

Если при обращении к сайту вы видите ошибку 502 Bad Gateway или иную, то в первую
очередь стоит обратиться к журналу ошибок, которые Вы можете найти в файле sitename.ru/log/app-runlog/current.

Наблюдение в реальном времени за лог-файлом:

tail -f ~/sitename.ru/log/app-runlog/current

4. Интерактивная документация

Вы можете ознакомиться с автоматической интерактивной документацией, работающей на Swagger UI, обратившись в браузере по адресу

https://sitename.ru/docs

Хостинг
Хостинг
Хостинг
Создавайте неограниченное количество сайтов в изолированных контейнерах
Заказать

Нам доверяют тысячи компаний и разработчиков

22 года
Предоставляем услуги профессионального хостинга
35 000+
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime наших серверов хостинга
Callibri
Forum
УГМК-Здоровье
Крылья
Tele-Club
Linline
ipos.digital
Магнум
Туристер
RoiBuro
ROSO
Callibri
Forum
УГМК-Здоровье
Крылья
Tele-Club
Linline
ipos.digital
Магнум
Туристер
RoiBuro
ROSO
ВК49865