Невозможно запустить приложение WSGI во встроенном режиме в системах UNIX, будь то prefork или рабочий MPM, поскольку в действительности будет несколько процессов. См:
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
Создание группы процессов-демонов, состоящей из одного процесса и делегирования приложения WSGI, должно достичь того, чего вы хотите. Вам даже не нужно использовать WSGIApplicationGroup, если речь идет только об одном смонтированном приложении WSGI. Если вы хотите быть абсолютно уверенным, вы также можете установить его.
Таким образом, конфигурация в VirtualHost будет:
WSGIDaemonProcess osvm
WSGIProcessGroup osvm
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /var/convergedsecurity/apache/osvm.wsgi
Хотя для «процессов = 1» для WSGIDaemonProcess явно указывается, что создан один процесс, не предоставляйте эту опцию и просто оставьте по умолчанию один процесс. Любое использование параметра «процессы», даже если для одного процесса будет установлено значение «wsgi.multiprocess», установленное в значение «Истина».
Вместо того, чтобы использовать ваше настоящее приложение WSGI, я бы посоветовал вам протестировать его с помощью следующей простой тестовой программы.
import cStringIO
import os
def application(environ, start_response):
headers = []
headers.append(('Content-Type', 'text/plain'))
write = start_response('200 OK', headers)
input = environ['wsgi.input']
output = cStringIO.StringIO()
print >> output, "PID: %s" % os.getpid()
print >> output
keys = environ.keys()
keys.sort()
for key in keys:
print >> output, '%s: %s' % (key, repr(environ[key]))
print >> output
output.write(input.read(int(environ.get('CONTENT_LENGTH', '0'))))
return [output.getvalue()]
На выходе этого значение PID всегда должно быть одинаковым. Флаг wsgi.multiprocess должен иметь значение False. Значение mod_wsgi.process_group должно соответствовать тому, что вы называли группой процессов-демонов. И mod_wsgi.application_group должна быть пустой строкой.
Если это не то, что вы видите, убедитесь, что вы действительно перезапустили Apache после внесения изменений в конфигурацию. Также добавьте:
LogLevel debug
Конфигурация Apache для VirtualHost. Это приведет к тому, что mod_wsgi будет регистрировать намного больше сообщений в журнале ошибок Apache о создании процессов и загрузке сценариев, включая сведения о группе процессов и группе приложений, для которых происходят события.
Для получения дополнительной информации об отладке см .:
http://code.google.com/p/modwsgi/wiki/DebuggingTechniques
Если проблемы не устранены, предложите перейти в список рассылки mod_wsgi в группах Google.