Джанго: Работа С Xinetd

Итак, еще один способ запуска Django. Но почему? Ведь способов запуска уже нет. Казалось бы, на любой вкус.

Обоснование и описание находятся под катом.



Введение

Мне пришла в голову идея.

А именно, используйте веб-приложения как приложения на своем компьютере.

Поскольку я работаю с Python/Django, писать приложения с их использованием вполне естественно.

Что для этого нужно? Вам необходимо запускать веб-приложения с минимумом лишней работы.

Все для этого вроде бы есть, Django может работать без сервера базы данных (с использованием SQLite), есть встроенный девсервер, т.е.

можно запускать веб-приложения без установки и настройки веб-сервера.

Но оказалось, что если с SQLite всё в порядке, то работать через встроенный девсервер не так уж и удобно.

Его нужно запускать вручную, что, согласитесь, требует дополнительных усилий.

Хотелось бы, чтобы все начинало работать автоматически при переходе по ссылке.

Конечно, вы можете запустить devserver при запуске системы, используя сценарии запуска.

Но это как-то некрасиво, съедает ресурсы и тормозит запуск компьютера.

Что делать, если таких приложений много? Итак, чего ты хочешь? Чтобы веб-приложение начинало работать при обращении к его адресу, и при отсутствии запросов спокойно лежало у вас на жестком диске.



Предлагаемое решение

Потом я вспомнил xinetd. Этот сервер делает именно то, что очень похоже на мою задачу:
  • Прослушивает настроенные порты на локальном хосте.

  • При доступе через заранее настроенный порт нужное приложение запускается и передает полученный запрос на стандартный ввод приложения.

  • Запущенное приложение отправляет ответ на свой стандартный вывод, xinetd отправляет ответ клиенту.

Все хорошо, только здесь есть стандартный ввод и вывод, а Django общается с веб-сервером по протоколу WSGI.

Скрипт

Итак, мне нужно написать скрипт, который будет, с одной стороны, общаться с xinetd через stdin/stdout, а с другой — с моим Django-приложением через WSGI. Скрипт был написан и первая версия выложена на GitHub. Возможно кому-то это будет интересно, пожалуйста.

Скачать скрипт можно на GitHub: Джанго-xinetd Установка и настройка описаны в README.

Заключение

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

Но для самых простых случаев его можно использовать.

Чуть не забыл, в качестве платформы используется Linux (Ubuntu).

xinetd устанавливается командой:

   

apt-get install xinetd

Скрипт был написан и протестирован с использованием Django v1.4. Это важно, так как в предыдущих версиях работа со статическими файлами была иной.

В более ранних версиях статические файлы обслуживаться не будут. Теги: #django #python #xinetd #python #django

Вместе с данным постом часто просматривают: