mod_wsgi + apache没有多线程,为什么?

时间:2010-07-27 07:32:13

标签: python apache wsgi

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 个答案:

答案 0 :(得分:3)

这是在mod_wsgi邮件列表上处理的。参见:

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

答案 1 :(得分:1)

虽然不完全是答案,但我在单个具有多个选项卡的浏览器上进行测试时,发现了类似设置的串行行为。 (我试过chrome7和ff4)

想知道是否是浏览器强制执行串行连接,我尝试使用两个独立的浏览器进行相同的实验,并且它确实显示服务器是多线程的。

我的设置是:
mod_wsgi 3.3-1
python 3.1.2-2
apache 2.2.17-1
在archlinux x86_64上 在嵌入模式下使用mod_wsgi运行测试。

希望它有所帮助。