mod_wsgi + apache не многопоточный, почему? - PullRequest
2 голосов
/ 27 июля 2010

WSGI-приложение


# coding: utf-8

import time

def application(environ, start_response):
    status = '200 OK'
    output = str(time.time())
    time.sleep(5)
    output += ' -> ' + str(time.time())

    response_headers = [('Content-type', 'text/html; charset=utf-8'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

Apache VirtualHost



    ServerName localhost

    WSGIDaemonProcess main user=www-data group=www-data processes=1 threads=5
    WSGIScriptAlias / /var/www/main/main.wsgi

    
        WSGIProcessGroup main
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    

    ErrorLog /var/log/apache2/main_error_log
    CustomLog /var/log/apache2/main_log common

При подключении нескольких клиентов они обрабатываются последовательно, многопоточность отсутствует.Почему?

Ответы [ 2 ]

3 голосов
/ 28 июля 2010

Об этом говорится в списке рассылки mod_wsgi. См:

http://groups.google.com/group/modwsgi/browse_frm/thread/b8aaab6bfc4cca6d

1 голос
/ 23 ноября 2010

Хотя это не совсем ответ, я заметил, что последовательное поведение с аналогичной настройкой при тестировании в одном браузере с несколькими вкладками. (я пробовал chrome7 и ff4)

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

Моя настройка была:
mod_wsgi 3.3-1
питон 3.1.2-2
apache 2.2.17-1
на archlinux x86_64
тесты были запущены с mod_wsgi во встроенном режиме.

надеюсь, это поможет.

...