В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.
1. Запуск Python
2. Перезапуск сервиса после изменения кода сайта
3. Работа с ошибками приложения
AsyncIO - модуль для организации асинхронного программирования. Появился в Python 3.4.
На базе AsyncIO можно организовать поддержку WebSocket, либо обрабатывать большое количество соединений.
В отличие от обычных сайтов на Python, сайт на Python AsyncIO сам должен быть web-сервером для проксирования.
Таким образом ваше приложение будет запускаться не через wsgi, а как отдельный сервис.
Вашему сайту потребуется прикрепиться на IP и порт, указанные в переменных окружения APP_IP и APP_PORT. Пример.
При создании сайта необходимо выбрать, что сайт работает на Python AsyncIO:
Загрузить файлы сайта можно подключившись по SFTP.
Файлы вашего приложения можно расположить в каталоге sitename/app
, а статические файлы
(.css, .jpg, .png и другие) - в каталоге sitename/www
.
Чтобы установить зависимости потребуется подключиться по SSH.
Далее установите зависимости:
pip install -r requirements.txt
или
python setup.py install
Для запуска сервера используйте переменные окружения APP_IP
и APP_PORT
Пример для библиотеки aiohttp
:
#!/usr/bin/env python3
from aiohttp import web
app = web.Application()
... # инициализация приложения AioHTTP
# Запуск сервера
web.run_app(app, host=os.environ['APP_IP'], port=os.environ['APP_PORT'])
После того как файлы будут загружены, откройте настройки сайта в личном кабинете
и укажите файл для запуска вашего приложения. Например app/hello.py
.
После изменения кода сайта потребуется перезапуск сервиса.
Для перезапуска приложения:
Для перезапуска приложения в терминальном режиме в папке с сайтом выполните команду
touch reload
Например
c3087@h2:~/mydomain.ru$ touch reload
Если при обращении к сайту вы видите ошибку 502 Bad Gateway
или аналогичную, то в первую
очередь стоит обратиться к логам ошибок.
Возникавшие ошибки за нужную дату можно найти в файлах имясайта/log/app-runlog/current
.
Наблюдение в реальном времени за лог-файлом:
tail -f ~/имясайта/log/app-runlog/current