В свежей версии uwsgiconf был обучен интересным трюкам с Django
Как было обещано, расскажу о том, что умеет uwsgiconf, начиная с 0.15.

На заметку
uwsgiconf — приложение, упрощающее конфигурирование uWSGI и взаимодействие с ним. Желающие обзорно узнать чуть больше о uWSGI могут обратиться к слайдам из моего старого выступления — Введение в uWSGI.

uwsgify


Итак, в комплекте с uwsgiconf теперь идёт подключаемое Django-приложение под кодовым названием uwsgify, которое нужно добавить в INSTALLED_APPS:

INSTALLED_APPS = [
...
'uwsgiconf.contrib.django.uwsgify',
]

После этого вам станут доступны дополнительные управляющие команды (через скрипт manage.py):

  • uwsgi_run — Запуск вашего Djagno-проекта при помощи uWSGI. Похоже на команду runuwsgi из django-uwsgi, однако позволяет весьма гибко настраивать uWSGI не переменными среды, а при помощи родных для uwsgiconf файлов uwsgicfg.py.
  • uwsgi_reload — Перезагрузка uWSGI (без остановки).
  • uwsgi_stop — Остановка uWSGI.
  • uwsgi_log — Управление мшинерией, связанной с журналом: ротация, повторное открытие.
  • uwsgi_stats — Вывод в журнал приложения текущей статистики и используемой конфигурации uWSGI.
  • uwsgi_sysinit — Помощник, составляющий файлы конфигурации для систем управления типа Systemd, upstart.

Вот так, к примеру, можно создать новый Django-проект и запустить на uWSGI:

    
; Создаём директорию и виртуальное окружение под новый проект.
$ mkdir abc
$ cd abc/
$ virtualenv -p /usr/bin/python3 venv
$ . venv/bin/activate
; Ставим всё нужное.
$ pip install django uwsgi uwsgiconf
; Создаём новый Django-проект.
$ django-admin startproject demo
$ cd demo/
; Добавим 'uwsgiconf.contrib.django.uwsgify' в INSTALLED_APPS
$ mcedit demo/settings.py
; Запускаем на http://localhost:8000
$ ./manage.py uwsgi_run

На заметку
О том, на сколько быстра/медленна созданная сейчас нами связка можно узнать из статьи «Narrow — кто быстрее в веб».

Если вы захотите подкрутить настройки uWSGI, то можно рядом с manage.py создать uwsgicfg.py, в котором осуществить конфигурирование. Для начала подойдёт:

    from uwsgiconf.config import configure_uwsgi


def get_configurations():

from uwsgiconf.presets.nice import PythonSection

section = PythonSection(
wsgi_module='demo/wsgi.py'
).networking.register_socket(
PythonSection.networking.sockets.http('127.0.0.1:9000'))

return section


configure_uwsgi(get_configurations)

После этого управляющие команды станут использовать вашу конфигурацию.

В дальшейшем uwsgify, вероятно, будет пополняться и другими интересностями.

Однако это не все нововведения: с расширенным списком можно ознакомиться в файле изменений.

Продолжаем упрощать.

Категории

Язык
Окружение
Проект

На заметку
Зарегистрированные пользователи могут публиковать свои Статьи.