Конфигурирование uWSGI из кода на Python.
Если вы думаете, что знаете uWSGI, то вероятно ошибаетесь: постоянно выясняется, что это нечто большее, чем вы думали.
Там так много подсистем и опций (более 800), что их трудно уместить в голове.

uwsgiconf позволяет конфигурировать uWSGI из приложений на Python.

Некоторые особенности:
  • Опции разных подсистем структурированы при помощи классов и методов;
  • Строки документации и единообразное именование сущностей упрощает навигацию;
  • В комплекте есть предустановки, позволяющие не писать лишнего кода;
  • Поощряет повторное использование конфигураций;
  • Имеет интерфейс командной строки для удобства конфигурирования и запуска;
  • Включает простую в использовании, документированную заглушку модуля uwsgi;
  • Предлагает модуль для сообщения с uWSGI во время исполнения, похожий на uwsgidecorators, но с дополнительными инструментами;
  • Предлагает пакет для интеграции с каркасом Django;
  • Умеет генерировать файлы конфигурации для Systemd и Upstart;
  • Поддерживает pyuwsgi.

На заметку
Чтобы повысить продуктивность работы с uwsgiconf используйте среду разработки с поддержкой автодополнения и строк документации.

Статическое конфигурирование


Создайте uwsgicfg.py, в котором мы сконфигурируем uWSGI для запуска нашего веб-приложения, используя предустановку PythonSection.

    from uwsgiconf.config import configure_uwsgi
from uwsgiconf.presets.nice import PythonSection


def get_configurations():
"""Создаёт конфигурацию для запуска приложения из wsgi.py на 127.0.0.1:8000."""
return PythonSection.bootstrap(
'http://127.0.0.1:8000',
wsgi_module='/home/idle/myapp/wsgi.py')

configure_uwsgi(get_configurations) # Указываем функцию конфигурирования.

Чтобы создать файл конфигурации uWSGI используем команду compile:

    $ uwsgiconf compile > myconf.ini
$ uwsgi myconf.ini

Но можно пойти дальше и при помощи команды run автоматически запускать uWSGI с конфигурацией из созданного uwsgicfg.py:

    $ uwsgiconf run

На заметку
Чтобы использовать интерфейс командной строки uwsgiconf, нужно установить пакет с расширением cli: pip install uwsgiconf[cli].


Динамическое конфигурирование


Для того чтобы иметь доступ к инструментам uWSGI во время исполнения приложения, uwsgiconf поставляется с инструментами, похожими на те, что входят в uwsgidecorators. Эти абстракции используют заглушку модуля uwsgi, когда реальный модуль недоступен (например, код запущен не под uWSGI).

Пример использования некоторых инструментов:

    from uwsgiconf.runtime.locking import lock
from uwsgiconf.runtime.scheduling import register_timer_rb

@register_timer_rb(10, repeat=2)
def repeat_twice():
"""Выполнится дважды с интервалом 10 секунд."""

with lock():
# Используем блокировку, чтобы не было гонок.
do_something()

Во время исполнения uwsgiconf предоставляет инструменты для доступа к следующим подсистемам uWSGI :

  • Оповещения (alarms)
  • Кеш
  • Блокировки
  • Журналирование
  • Мониторинг
  • Мулы и фермы
  • Удалённый вызов процедур
  • Планировщик
  • Сигналы
  • Веб-сокеты
  • и проч.

Интеграция с Django


Если включить интеграцию с Django, то:
  • в административном интерфейсе появится раздел со статистикой uWSGI;
  • фоновые задания будут автоматически подгружены из модулей tasks.py приложений;
  • станут доступны команды управления (uwsgi_run, uwsgi_reload и проч.).

За более подробным описанием и примерами конфигурирования обратитесь к документации (англ.).

Смотрите также:

Категории

Окружение
Проект

На заметку
Читайте нас в Twitter. Ссылка в самом низу страницы.