2016-05-15 6 views
0

Я бегом Джанго веб-сервер с файлом manage.py по умолчанию, как я могу демон его с помощью SVC daemontoolsКак запустить сервер с Джанго DaemonTools

Содержимое моего файла запуска в DaemonTools является

#!/bin/bash 
exec setuidgid <myuser> /usr/bin/python <path/to/manage.py> runserver 2>&1 

Содержание manage.py

import os 
import sys 

if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE","settings") 

from django.core.management import execute_from_command_line 

execute_from_command_line(sys.argv) 

Дочерний процесс (manage.py runserver) из svscanboot вилка другого процесса в execute_from_command_line (импортировано из django.c ore.management), которую нельзя контролировать с помощью команд svc. Ниже приведено дерево процессов для svscanboot.

/bin/sh /usr/bin/svscanboot 
\_ svscan /etc/service 
    \_ supervise myapp 
     \_ /usr/bin/python </path/to/manage.py> runserver 
      \_ /usr/bin/python </path/to/manage.py> runserver 

Теперь, если я выполнить SVC -d он посылает сигнал TERM к первому процессу runserver, и в результате просто убивает, а второй процесс становится процессом сиротского, который не может управляться с помощью SVC команд.

Как я могу управлять всем деревом процессов дочернего процесса с помощью daemontools?

+0

Почему вы хотите это сделать? Сервер не предназначен для производства, вы не должны пытаться запускать его автоматически. –

ответ

0

Это можно решить, запустив сервер django с параметром --noreload.

Django запускает другой процесс только тогда, когда --noreload не передается, и это предназначено только для среды Dev.

https://github.com/django/django/blob/master/django/utils/autoreload.py#L290 

В не-Dev среде вы не хотели бы, чтобы сервер Джанго, чтобы перезагружается, как вы не будете изменения кода в таких условиях. Поэтому запуск сервера с помощью --noreload решает проблему.

Однако не рекомендуется запускать сервер django по умолчанию на производстве.

+0

Нет, нет. Он не должен использоваться в производстве. У вас был этот комментарий от ведущего авторитета по этому вопросу. – e4c5