Xgu.ru теперь в Контакте  — приходите и подключайтесь.
Пока мы работаем над следующими видео, вы можете подключиться в Контакте. Познакомимся и обсудим новые страницы и ролики.

Vk-big.pngYoutube-big.jpeg

Flask

Материал из Xgu.ru

Перейти к: навигация, поиск

Flask — веб-фреймворк (микрофреймворк) для Python.

Несмотря на свой размер (он очень маленький и очень приятный), обладает большим количеством возможностей в числе которых:

  • Поддержка языков шаблонов (Jinja2);
  • Мощный отладчик кода (Werkzeug);
  • Поддержка REST;
  • Поддержка WSGI;
  • Очень классная документация;
  • Простота, мощь и красота.

Содержание

[править] Простейший пример

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Запуск:

$ pip install Flask
$ python hello.py
 * Running on http://localhost:5000/

Можно обращаться на порт 5000.

[править] Дополнительные модули

Полезные модули, которые можно использовать в сочетании с Flask:

  • Pyxley (англ.) — построение dashboard'ов с помощью Flask и React

[править] Flask и AngularJS

Другой пример:

[править] Вопросы и ответы

[править] Какие способы запуска flask-приложения существуют?

Участник:RemiZOffAlex: Прошу дать элементарные примеры запуска web приложения (flask) как демона с проверкой уже загруженного процесса и возможностями перезагрузки. Так же, как если бы он был запущен через python3.4 run.py (НЕ WSGI).

Вариант 1: с помощью uwsgi

# pip3.4 install uWSGI
# mkdir -p /var/run/uwsgi /var/log/uwsgi /etc/uwsgi/conf.d
Файл: /etc/uwsgi/conf.ini
[uwsgi]
emperor = /etc/uwsgi/conf.d
uid = nginx
gid = nginx
logto = /var/log/uwsgi/uwsgi.log


Файл: appname.ini
[uwsgi]
vassal_name = appname
chdir = /data/www/appname
# home = /data/www/appname
socket = /var/run/uwsgi/appname.sock
wsgi-file = /data/www/appname/appname.wsgi
logto = /var/log/uwsgi/appname.log
py-autoreload = 10


Файл: /etc/nginx/vhosts/appname.conf
server {
        listen 8000;
        server_name appname.org;
        access_log  /var/log/nginx/access-appname.org.log  main;
        error_log   /var/log/nginx/error-appname.org.log info;
        location / {
                include uwsgi_params;
                uwsgi_pass unix:///var/run/uwsgi/appname.sock;
        }
}


Файл: /etc/systemd/system/emperor.uwsgi.service
[Unit]
Description=uWSGI Emperor
After=syslog.target

[Service]
ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi/conf.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target


[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/Flask»