Skip to main content

Documentation

Технические детали о Flask

Сервис Flask, запущенный на Ubuntu 20.04 LTS, доступен по адресу: http://194.67.112.136:5000/analize (кроме порта 5000 также и на других портах, обеспечивающих многопоточный режим расчёта моделей)

Section Documentation
Updated 06.07.2023

Сервис Flask на Ubuntu 20.04 LTS#

Сервис Flask, запущенный на Ubuntu 20.04 LTS, доступен по адресу http://194.67.112.136:5000/analize. Помимо порта 5000, используются и другие порты для поддержки многопоточного режима расчёта моделей.

  • Основное Flask-приложение расположено по пути /root/mpawns_flask/app.py.
  • Сохраненные нейронные сети находятся в подкаталогах /root/mpawns_flask/New.

Старт сервиса#

Старт сервиса выполняется автоматически через командный файл /root/mpawns_flask/after_reboot.sh.

Пример содержимого этого файла:

echo booted $(date) >> /root/greetings.txt
cd mpawns_flask
source myenv/bin/activate
flask run --host=0.0.0.0

Назначение строк:

  • запись времени перезагрузки в лог-файл;
  • переход в каталог с Flask-приложением;
  • активация виртуальной среды со всеми Python-зависимостями;
  • запуск Flask с доступом снаружи сервера; по умолчанию используется порт 5000.

Автоматический запуск после перезагрузки#

Командный файл запускается после каждой перезагрузки, потому что в системном каталоге /etc/cron.d/ расположен cron-файл flask-restart:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# rebooting every night at 03:59
59 3 * * * root reboot now

# after reboot/boot starting flask:
@reboot root /root/mpawns_flask/after_reboot.sh

В этом файле заданы две ключевые операции:

  • ежедневная перезагрузка сервера в 03:59;
  • автоматический вызов after_reboot.sh после перезапуска системы.

Примечания#

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

Дополнительно сервис доработан так, чтобы при каждом вызове возвращался не только ответ нейросети и тайминги, но и текущее потребление памяти Flask-процессом. Это позволяет мониторить состояние сервиса снаружи, например через тестовую программу test_4_nick.php, которая обращается к нескольким работающим серверам и сравнивает ответы и время выполнения.

Continue Reading

Related Articles