DevGang
Авторизоваться

Создайте сервис systemd для Flask API (для дистрибутивов GNU / Linux) 

Привет… в этом посте я хочу показать вам кое-что о трюке с производительностью на стороне сервера. Я расскажу о пакете systemd в системах Linux, который будет использоваться в процессе разработки приложений или на заказ.

systemd по словам Леннарта Поеттеринга, в первую очередь, это программный пакет, входящий в состав операционных систем Linux.

Он создается процессом init и принимает 1 в качестве идентификатора процесса (pid). Сервисы systemd запускаются автоматически и могут управляться пользователями root. С помощью команды sytemctl можно запускать и останавливать службы systemd, приложения, изменившие файлы конфигурации, можно перечитывать и перезапускать (перезагружать), можно получить статус процесса, можно управлять после перезагрузки системы (включить / выключить). Для получения дополнительной информации см. Страницу руководства.

man systemctl

Flask microframework это очень простая в использовании программа для создания простых API. Чтобы добавить его в файл сценария, достаточно загрузить модуль flask и включить его на страницу, а также создать объект приложения для создания ваших маршрутов. Затем можно использовать приведенный ниже сценарий.

import flask
app = flask.Flask(__name__)
app.config["DEBUG"] = True

@app.route('/', methods=['GET'])
def function_one():
return "<div style=\"   display: flex;justify-content: center;align-items: center;height: 100%;border: 3px solid green;  \" ><p>Hello sir, It seems to work properly.Here is<span style=\"font-size:50px; color:white; background-color:red\"> / </span></p> </div>"

@app.route('/users', methods=['GET'])
def function_two():
return "<div style=\"   display: flex;justify-content: center;align-items: center;height: 100%;border: 3px solid green;  \" ><p>Hello sir, It seems to work properly.Here is<span style=\"font-size:50px; color:white; background-color:green\"> /users</span> </p> </div>"

@app.route('/products', methods=['GET'])
def function_three():
return "<div style=\"   display: flex;justify-content: center;align-items: center;height: 100%;border: 3px solid green;  \" ><p>Hello sir, It seems to work properly.Here is<span style=\"font-size:50px; color:white; background-color:blue\"> /products </span></p> </div>"

app.run()

По умолчанию он начинает работать с расширением localhost:5000 port. Чтобы изменить порт или хост, вы можете указать новый хост и порт с помощью app.run(host='ip_addr',port='port' ).

После сохранения сценария как app.py его можно преобразовать в службу systemd.

Когда приложение flask запускается с Python, оно запускается на «сервере разработки». Существуют различные варианты поднятия API в «производственной» среде. Вы можете узнать об этом на странице руководства Flask.

Ознакомьтесь с вариантами развертывания фляги

В зависимости от операционной системы sudo vi /lib/systemd/system/myFlaskApp.service, или откроем в редакторе nano. Этот путь может отличаться в зависимости от дистрибутива. Чтобы узнать, где находятся другие службы, например, для службы mariadb,

locate mariadb

Если нет вывода, используйте команду updatedb и попробуйте еще раз. services также можно найти в разделе /usr/lib/systemd/system/… или вы можете создать такой каталог в каталоге /usr.

/lib/systemd/system/myFlaskApp.service =>

[Unit]
Description=My flask API service
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
User=your username
PermissionsStartOnly=true
ExecStart=/usr/bin/python3 /your/path/app.py
Restart=on-failure
TimeoutSec=600 

Примечание: здесь мы устанавливаем Restart=on-failure. Это указывает на то, что мы хотим, чтобы он перезапускался только тогда, когда код выхода не равен 0. Вместо этого мы также можем добавить строки Restart=always и RestartSec=1.
Вы можете добавить файл конфигурации с расширением sudo vi /etc/init/myFlaskApp.config.

description "MyFlaskApp"
start on stopped rc RUNLEVEL=[2345]
respawn
exec python3 /your/path/app.py

Потом

sudo systemctl start myFlaskApp

Вы можете запустить службу с помощью этой команды. Убедитесь, что он находится в состоянии active(running) с systemctl status.

Этот метод может быть полезен для разработок, сделанных в облачной службе, но рекомендуется использовать указанные выше параметры deployment с точки зрения как производительности, так и управляемости в производственной среде.

Эта служба работает в фоновом режиме без вмешательства пользователя. Требуется pid, как видно с sytemctl status. Если создается модульная структура API, а операция маршрута и другие операции изолированы друг от друга, этот метод может быть полезен в ситуациях, когда не требуется никаких изменений в этом файле. Таким образом, мы можем назвать это «лайфхаком». Использовать что-то в качестве значения этого слова для улучшения образа жизни помимо его цели...

#Flask #Linux
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

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

Попробовать

В подарок 100$ на счет при регистрации

Получить