Работает ли производственный сервер DJango? - PullRequest
1 голос
/ 04 января 2011

Я храню некоторую информацию в глобальных переменных в моих представлениях DJango. Эта информация может быть доступна каждому потоку в процессе Python Django. Однако мне интересно, как Django ведет себя на производстве. Производит ли Django процесс fork () несколько раз для обработки запросов? Если это так, эти данные не будут одинаковыми для всех процессов. Кто-нибудь знает, разветвляется ли Django?

Ответы [ 3 ]

2 голосов
/ 04 января 2011

Я уверен, что это зависит от вашего развертывания, но если вы используете его под FastCGI или WSGI, то да, обычно он предварительно разветвляется на ряд серверных процессов для обработки входящих запросов.

Я не знаю, как работать под mod_python, но я думаю, что в наши дни это не рекомендуется в пользу WSGI.

0 голосов
/ 05 января 2011

Для mod_wsgi читать:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

Объясняет различные модели и рекомендации по использованию общих данных в потоках / процессах. Ситуация не сильно отличается для других систем хостинга.

0 голосов
/ 05 января 2011

Я не эксперт в этой области, поэтому я отвечаю, основываясь только на том, что я только что сделал.

Сервер fastcgi , кажется, может работать, в зависимости от настроек конфигурации:

http://code.djangoproject.com/browser/django/tags/releases/1.2.3/django/core/servers/fastcgi.py#L171 http://code.djangoproject.com/browser/django/tags/releases/1.2.3/django/utils/daemonize.py

Что касается WSGI, я считаю, что обработка на стороне Django идет прямо к обработке запроса:

http://code.djangoproject.com/browser/django/tags/releases/1.2.3/django/core/handlers/wsgi.py#L217

и разветвление настраивается в mod_wsgi: http://code.google.com/p/modwsgi/ - встроенный режим по сравнению с режимом демона - и / или в Apache (рабочие сборки по сравнению с prefork).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...