Django视图中的BeautifulSoup使WSGI超时

时间:2015-04-29 06:05:27

标签: django beautifulsoup mod-wsgi

出于奇怪的原因,当我在Django视图中实例化 BeautifulSoup 对象时,WSGI超时。任何帮助都是值得赞赏的,因为我在墙上撞了几个小时,无法找到问题的根源。

观点:

def index(request):
    soup = BeautifulSoup('<b>Bold</b>') # Removing this line solve the proble
    return HttpResponse('Hello')

Apache日志中的错误消息:

[wsgi:error] [pid 4014] [client 127.0.0.1:50892] Timeout when reading response headers from daemon process 'test.local': /htdocs/test/test/wsgi.py

更新:这似乎是BeautifulSoup中的bug,但没有任何意义。

1 个答案:

答案 0 :(得分:7)

使用C扩展模块的Python的各种第三方软件包,包括scipy,numpy和Beautifulsoup,只能在Python主解释器中使用,不能在子解释器中使用,因为默认使用mod_wsgi。您可以在下面的链接中找到。

http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API

您可以在conf文件中写下以下行来解决此问题。

WSGIApplicationGroup %{GLOBAL}

如果在同一服务器上运行多个WSGI应用程序,您可能希望开始使用守护程序模式进行调查,因为某些框架不允许多个实例在同一个解释器中运行。 Django就属于这种情况。因此,使用守护进程模式,因此每个进程都在自己的进程中,并强制每个进程在其各自的守护进程模式进程组的主解释器中运行。